私が呼び出すときMath.ceil(5.2)
、リターンはdouble
6.0
です。私の自然な傾向は、それMath.ceil(double a)
がを返すだろうと考えることでしたlong
。ドキュメントから:
ceil(double a)
double
引数以上で、数学的な整数に等しい最小の(負の無限大に最も近い)値を返します。
しかし、結果が整数であるのに、なぜadouble
ではなくaを返すのでしょうか。long
その背後にある理由を理解することは、Javaをもう少しよく理解するのに役立つかもしれないと思います。long
また、にキャストすることで問題が発生するかどうかを判断するのに役立つ場合があります。
long b = (long)Math.ceil(a);
いつも私はそれがどうあるべきだと思いますか?問題のある境界ケースがいくつかあるのではないかと心配しています。