请注意我不在寻找代码来将double或int缩小为int。管理缩小双向int的规则
作为每JLS - $ 5.1.3 Narrowing Primitive Conversion
带符号的整数的一种积分类型T ,缩小转换简单地丢弃所有,但n个最低阶位,其中n是用于表示类型T.比特数
所以,当我尽力缩小一个260(二进制表示为100000100
),以一个字节然后结果是4,因为最低8位是00000100
这是一个十进制4或长值4294967296L(二进制表示100000000000000000000000000000000
)将字节则结果为0。
现在,为什么我想知道缩小双重规则为int的规则,字节等是当我缩小一个double
值4294967296.0
那么结果是2147483647
但是当我缩小长4294967296L
值然后结果是0
。
我已经理解了对int,byte等的长期缩小(抛弃了所有的n个最低位),但是我想知道在双缩小的情况下会在什么情况下进行。
答案是在你引用的那行之后有几行:_将浮点数转换为整型T需要两步:[...] _ –
我确实读过它,但我真的无法从中得到答案。我可以理解,它会从1.b完成,但无法理解。如果你可以请投掷灯光,我会非常感激。 – hagrawal
我认为它会在某种程度上理解双重浮动缩小规则,受IEEE 754四舍五入。 – hagrawal