【问题标题】:(Java) why is Math.ceil(15/10) is 1.0 and not 2.0?(Java) 为什么 Math.ceil(15/10) 是 1.0 而不是 2.0?
【发布时间】:2013-03-26 17:15:02
【问题描述】:

为什么是 Math.ceil(15/10) 1.0 而不是 2.0 ? 当我改为运行 Math.ceil((double)15/10) 时,我得到了预期的 2.0。

【问题讨论】:

  • 改用Math.ceil(15f/10)

标签: java casting double integer-division


【解决方案1】:

因为一个整数除以另一个整数会得到一个整数:15/101

来自the specification

整数除法向 0 舍入。也就是说,产生的商 二进制数值提升后的整数操作数 n 和 d (§5.6.2) 是一个整数值 q,其大小尽可能大 同时满足|d·q| ≤ |n|。此外,当 |n| 时 q 为正≥ |d| 并且 n 和 d 具有相同的符号,但是当 |n| 时 q 为负≥ |d|和 n 和 d 有相反的符号。

您应该使用Math.ceil(15.0/10)Math.ceil(15f/10)(第一个使用双精度,第二个使用浮点)。

【讨论】:

  • 谢谢。你是一个了不起的人。
猜你喜欢
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 2011-06-17
  • 2014-06-09
  • 1970-01-01
相关资源
最近更新 更多