将等于整数的double总是强制转换为该整数吗?

H2O*_*aCl 13 java double casting

将等于整数的double总是强制转换为该整数(假设double不是导致溢出的那个).示例:Math.ceil()将返回一个等于整数的double.假设没有溢出,它总是会转换为相应的整数吗?

如果没有,我怎样才能将a舍入double到?intlong

Joa*_*son 9

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

  • 尾数表示53位,因为顶部位被暗示为1. (4认同)

jjl*_*lin 6

是的,它会完全转换.这在JLS的5.1.3节中有所描述,其中提到了这一点

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

由于您double完全等于int,"圆形"值只是完全相同的值,但您可以阅读规范以获取详细信息.