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

Ric*_*tra 6 java floating-point

如果你把一个浮点数转换1.0012成一个整数,它会变成真的1吗?

那时我为什么写:

(int)(14/13-0.001) 
Run Code Online (Sandbox Code Playgroud)

而不是1.07592变成10

(用Eclipse编译的Java).

Dej*_*jan 12

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

在例子中

(int)(14/13-0.001)
Run Code Online (Sandbox Code Playgroud)

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


JB *_*zet 8

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

1 - 0.01 因此低于1.

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

使用14.0 / 13 - 0.00114d / 13 - 0.001代替.