Java奇怪的ceil转换

标签 java decimal rounding

我不知道为什么,但如果我将参数从小数更改为分数,我会得到两个不同的结果。

这些方法将返回准确的值。我正在尝试对小数的数字进行四舍五入,例如:

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/

相关文章:

java - 如何在java中迭代2arraylist并在找到第一个匹配元素时退出

ios - 带逗号小数点分隔符的 NSNumberFormatter

java - 写入 RREF 时处理舍入误差

java - 带有 DecimalFormat 的 RoundingMode.UP 无法按预期工作

C++ 将十进制小时转换为小时、分钟和秒

python - 如何四舍五入一个值但不以单位步长

Java泛型类 "parameterized"通过扩展抽象类

java - 使用 Java 3.0.0 驱动程序连接到 MongoDB 2.6.3 (eclipse)

java - 将匿名函数传递给方法,存储它并执行它?

ios - NSNumberFormatter 适用于小数点分隔符,但不适用于逗号分隔符