为什么(int)(14/13 - 0.001)产生0而不是1?

时间:2014-03-02 08:48:11

标签: java floating-point

如果你将一个像1.0012这样的浮点数转换成一个整数,那么它会变成1吗?

那为什么我写的时候:

(int)(14/13-0.001) 

而不是1.07592〜成为1它变为0

(用Eclipse编译的Java)。

2 个答案:

答案 0 :(得分:12)

它会截断。对于1.0012,它只删除小数点右边的部分。

在示例中

(int)(14/13-0.001)

14/13将为1然后它将被转换为double,1.0-0.001 = 0.999,并且在截断后它变为0。

答案 1 :(得分:8)

14 / 13是整数除法。它的值是1。

1 - 0.01因此低于1.

将其转换为int因此产生0。

改为使用14.0 / 13 - 0.00114d / 13 - 0.001