我不知道为什么,但如果我将参数从小数更改为分数,我会得到两个不同的结果。
这些方法将返回准确的值。我正在尝试对小数的数字进行四舍五入,例如:
0.0 -> 0
0.1 -> 1
0.4 -> 1
0.5 -> 1
0.6 -> 1
1.0 -> 1
1.1 -> 2
// accepts Double
private void myRound(Double d){
int res = (int)Math.ceil(d);
return (res <= 0 ? 1 : res);
}
// acepts int
private void myRound(int i){
int res = (int)Math.ceil(i);
return (res <= 0 ? 1 : res);
}
示例:
System.out.println(myRound(14 / 10));
OUTPUT: 1
System.out.println(myRound(1.4);
OUTPUT: 2
最佳答案
问题是,首先转换为 Integer,其中 (14/10) 为 1,然后将其向上取整为 1。1.4 是 double ,因此将其向上取整为 double 。
关于Java奇怪的ceil转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14835479/