Java メソッドMath.round
を使用して数値を丸めることができます。次のコード フラグメントのうち、浮動小数点数を最も近い整数に変換するものはどれですか?
正解は次のとおりです。
double f = 4.65
int n = (int) Math.round(f);
以下ではないのはなぜですか。
double f = 4.65;
int n = Math.round(f);
Math.round(double)
を返すlong
ため、ナローイング キャストになります。
数学には 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 にキャストすることはできません。
double
aを toに渡すと、結果としてMath.Round
a が得られますlong
。
a を渡した場合にのみ、結果として afloat
が得られますint
。
Java ドキュメントから:
round( double a)引数に最も近いlong
を 返します。round( float a)引数に最も近いint
を 返します。
Java Docs によると、 aMath.round(double)
が返され、 aは ではないlong
ため、でキャストする必要があります。long
int
(int)