【发布时间】:2019-10-03 14:00:04
【问题描述】:
java.lang.Math 类有 ceil()、floor()、round() 方法,但没有 trunc() 一个。
同时,我在实践中看到 .intValue() 方法(实际上是 (int) 强制转换)完全符合我对 trunc() 标准含义的期望。
但是我找不到任何具体的文档来确认 intValue() 完全等效于 trunc() 并且从许多角度来看这很奇怪,例如:
描述“以 int 形式返回此 Double 的值(通过 强制转换为 int)" 来自 https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html 确实 不要说它“返回小数的整数部分 号码”之类的。
文章 What is .intValue() in Java? 没有说它的行为类似于 trunc()。
我对“Java trunc 方法”或类似的所有搜索都没有给出 好像我是唯一一个搜索 trunc() 并且好像我 不知道大家都知道的很常见的东西。
我能否以某种方式确认我可以安全地使用 intValue() 来获得用“trunc”模式四舍五入的小数?
【问题讨论】:
-
JLS 中有相当详尽的细节;该描述缺少什么?
-
"完全符合我对 trunc() 标准含义的期望" 也许值得定义您期望
trunc做的事情。 -
我认为他指的是精度损失问题,就像浮点数一样。
-
Double.intValue()的文档的Java 8 version 参考了 Java 语言规范第 5.1.3 节 Narrowing Primitive Conversions;这应该明确地解释“将double转换为int”是什么意思。 -
是的!而我读它的方式,“向零舍入” == truncate