Math.ceil(5.2)
に電話すると、返品はdouble
6.0
となります。私の自然な傾向は、Math.ceil(double a)
がlong
を返すと考えることでした。ドキュメントから:なぜMath.ceilはdoubleを返しますか?
ceil(double a)
引数以上であると数学 整数に等しい(負の無限大に最も近い)最小
double
値 を返します。
しかし、結果が整数であるとき、なぜdouble
ではなくlong
を返しますか?私はそれの背後にある理由を理解することは、私がJavaをもっと良く理解する助けになると思います。 long
にキャストすることで自分が困ってしまうかどうかを判断するのに役立ちます。私はそれがあるべきだと思うものを常に
long b = (long)Math.ceil(a);
のですか?私は問題があるいくつかの境界ケースがあるかもしれないことを恐れる。
http://stackoverflow.com/questions/3412449/why-does-math-round-return-a-long-but-math-floor-return-a-double – starblue