1

Java メソッドMath.roundを使用して数値を丸めることができます。次のコード フラグメントのうち、浮動小数点数を最も近い整数に変換するものはどれですか?

正解は次のとおりです。

double f = 4.65          
int n = (int) Math.round(f);

以下ではないのはなぜですか。

double f = 4.65;      
int n = Math.round(f);
4

4 に答える 4

7

Math.round(double)を返すlongため、ナローイング キャストになります。

于 2013-10-23T09:37:49.243 に答える
6

数学には 2 つの丸め方法があります。

static long round(double a) 
//Returns the closest long to the argument.

static int round(float a) 
//Returns the closest int to the argument.

long 値を返す最初のものを使用しています。これは int よりも大きな整数を格納でき、暗黙的に int にキャストすることはできません。

于 2013-10-23T09:38:00.567 に答える
2

doubleaを toに渡すと、結果としてMath.Rounda が得られますlong
a を渡した場合にのみ、結果として afloatが得られますint

Java ドキュメントから:

round( double a)引数に最も近いlong
を 返します。

round( float a)引数に最も近いint
を 返します。

于 2013-10-23T09:38:40.507 に答える
0

Java Docs によると、 aMath.round(double)が返され、 aは ではないlongため、でキャストする必要があります。longint(int)

于 2013-10-23T09:39:52.143 に答える