记录一次关于Math.ceil引发的问题

99 阅读1分钟
Math.ceil(x)
x应为浮点型
Math.ceil(a / 3)
如果a为整型的话 如果a为10 
那么其结果应该是3 而不是4
这是因为 a/3 它仍是整型 10/33 ,然后变量提升为double类型,经过ceil运算后仍是3
这是刷题过程中遇到的一个小问题。
如果想使用替代方案的话可以使用一下做法

Math.ceil(a * 1.0 / 3)
(a + 2 / 3) => 也可以替代浮点运算求得
再或者可以使用
a % 3 == 0 ? a : a / 3 + 1

后面又碰到

Long res = 3000 * 3000 * 3000;
这样写会爆int
应该写成
Long res = 1L * 3000 * 3000 * 3000;
或者
Long res = (long) 3000 * 3000 * 3000;

基础不牢地动山摇送给自己