Java trunc()方法等价物
java.lang.Math类有ceil()、floor()和round()方法,但没有trunc()方法 同时,我在实践中看到,.intValue()方法(实际上是(int)cast)完全符合我对trunc()的标准含义的期望 但是,我找不到任何具体的文档证实intValue()完全等同于trunc(),从许多角度来看,这很奇怪,例如:Java trunc()方法等价物,java,math,rounding,Java,Math,Rounding,java.lang.Math类有ceil()、floor()和round()方法,但没有trunc()方法 同时,我在实践中看到,.intValue()方法(实际上是(int)cast)完全符合我对trunc()的标准含义的期望 但是,我找不到任何具体的文档证实intValue()完全等同于trunc(),从许多角度来看,这很奇怪,例如: description“将此Double的值返回为int(按 将类型转换为int)“from” 做 不要说它“返回小数的整数部分” “数字”之类的 文章 没
- description“将此Double的值返回为int(按 将类型转换为int)“from” 做 不要说它“返回小数的整数部分” “数字”之类的
- 文章 没有说它的行为类似于trunc()
- 我对“JavaTrunc方法”之类的搜索都没有给出答案 好像我是唯一一个搜索trunc()的人 不知道一些大家都知道的很普通的事情
- 浮点到字节、短、字符、整型或长
- 双字节、短字节、字符、整型、长字节或浮点
- 在第一步中,如果T是byte、short、char或int,则将浮点数转换为[…]int,如下所示:
- 如果浮点数为NaN(§4.2.3),则转换的第一步结果为int或long 0
- 否则,如果浮点数不是无穷大,则将浮点数四舍五入为整数值V,四舍五入
使用IEEE 754四舍五入归零模式归零(§4.2.3)。还有
两个案例:
- 如果T是长的,并且这个整数值可以表示为长的,那么第一步的结果就是长值V
- 否则,如果这个整数值可以表示为int,那么第一步的结果就是int值V
- 浮点到字节、短、字符、整型或长
- 双字节、短字节、字符、整型、长字节或浮点
- 在第一步中,如果T是byte、short、char或int,则将浮点数转换为[…]int,如下所示:
- 如果浮点数为NaN(§4.2.3),则转换的第一步结果为int或long 0
- 否则,如果浮点数不是无穷大,则将浮点数四舍五入为整数值V,四舍五入
使用IEEE 754四舍五入归零模式归零(§4.2.3)。还有
两个案例:
- 如果T是长的,并且这个整数值可以表示为长的,那么第一步的结果就是长值V
- 否则,如果这个整数值可以表示为int,那么第一步的结果就是int值V
如所述。您可以使用
floor
和ceil
来实现trunc
public static double trunc(double value) {
return value<0 ? Math.ceil(value) : Math.floor(value);
}
您可以使用
floor
和ceil
来实现trunc
public static double trunc(double value) {
return value<0 ? Math.ceil(value) : Math.floor(value);
}
JLS中有相当详尽的细节;描述中缺少了什么?“这正是我从trunc()的标准含义中所期望的”也许值得定义您期望
trunc
做什么。我认为他指的是精度损失问题,就像浮动一样。文档的参考Java语言规范第5.1.3节缩小原语转换范围;这应该可以明确地解释“将一个double
转换为int
”意味着什么。是的!在我看来,“向零进发”==truncateThere是JLS中非常详尽的细节;描述中缺少了什么?“这正是我从trunc()的标准含义中所期望的”也许值得定义您期望trunc
做什么。我认为他指的是精度损失问题,就像浮动一样。文档的参考Java语言规范第5.1.3节缩小原语转换范围;这应该可以明确地解释“将一个double
转换为int
”意味着什么。是的!按照我的理解,“向零进位”==truncate