浮点避坑

浮点避坑

浮点数相加

我们知道浮点数尽量避免不同量纲的数相加

1
2
> 1023 + 0.00000000000001
Double = 1023.0

浮点数除法

不同量纲之间的除法也会得到不一样的结果

1
2
3
4
> 1.023/2.047
Double = 0.49975574010747426
> 1023.0/2047.0
Double = 0.49975574010747437

因此对于有些应用可能引入意向不到的结果
比如

1
2
3
4
> 1023.0/2047.0*2.047 == 1.023
Boolean = false
> 1023.0/2047.0*2047 == 1023
Boolean = true

警示!

避免不同量纲的数做加减法,还要注意不同量纲的数做乘除法带来的意外结果

评论