wen*_*ong 3 floating-point haskell equality
ghci> 4 == 3.9999999999999999
True
ghci> 10.2^2 == 104.04
False
Run Code Online (Sandbox Code Playgroud)
为什么第二个表达式返回False?
浮点值没有合理的概念.可以说,在Haskell中,表达式甚至类型检查是错误的.该问题对于使用浮点表示的所有语言都是通用的.
关于浮点的一些参考:
考虑使用的Rational哈斯克尔类型,如果你在这里需要正确的数学,但请注意,它支持更小的范围内操作,以及较少的硬件支持.
Prelude> 4 == (3.9999999999999 :: Rational)
False
Prelude> 10.2^2 == (104.04 :: Rational)
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |