等于整数的双精度值是否总是强制转换为该整数?

2022-09-04 20:12:35

等于整数的双精度值是否始终强制转换为该整数(假设双精度值不会导致溢出)。示例:Math.ceil() 将返回一个等于整数的双精度值。假设没有溢出,它是否总是被转换为它应该等于的相同整数?

如果没有,我如何将 a 舍入为 or ?doubleintlong


答案 1

由于Java类型是固定的,并且Java双精度体具有52位尾数,因此它们可以(轻松)表示32位Java int而无需舍入。


答案 2

是的,它将完全转换。这在 JLS 的第 5.1.3 节中进行了描述,其中提到

否则,如果浮点数不是无穷大,则浮点值将舍入为整数值 V,并使用 IEEE 754 四舍五入为零模式向零...

由于 您 正好等于 ,因此 “舍入” 值只是完全相同的值,但您可以阅读规范以获取详细信息。doubleint


推荐