Jon*_*eet 16
这些都记录在JLS的5.1.3节中.
在第一步中,浮点数转换为long(如果T为long)或转换为int(如果T为byte,short,char或int),如下所示:
如果浮点数为NaN(§4.2.3),则转换的第一步结果为int或long 0.
否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值V,使用IEEE 754舍入为零的模式(第4.2.3节)向零舍入.然后有两种情况:
如果T很长,并且该整数值可以表示为long,则第一步的结果是长值V.
否则,如果此整数值可以表示为int,则第一步的结果是int值V.
否则,以下两种情况之一必须为真:
该值必须太小(大幅度或负无穷大的负值),第一步的结果是int或long类型的最小可表示值.
该值必须太大(大幅度或正无穷大的正值),第一步的结果是int或long类型的最大可表示值.
(这里的第二个步骤是无关紧要的,当T是int).
在大多数情况下,我希望使用硬件支持来实现 - 将浮点数转换为整数通常由CPU处理.
aru*_*aku 13
如果您使用(int)强制转换,Java会截断其值,您可能会注意到:
double d = 2.4d;
int i = (int) d;
System.out.println(i);
d = 2.6;
i = (int) d;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
输出:
2
2
Run Code Online (Sandbox Code Playgroud)
除非你使用Math.round,Math.ceil,Math.floor ......
| 归档时间: |
|
| 查看次数: |
19305 次 |
| 最近记录: |