【发布时间】:2013-05-10 20:01:00
【问题描述】:
我有一个关于 Haskell floor 函数的问题 - 它应该返回“不大于参数的最大整数”但表达式
floor 3.9999999999999999
返回 4 而不是 3。它可能与 Double 类型精度有关,但考虑到 Haskell 类型安全的重要性,它不应该编译,无论如何在这种情况下它返回的数字大于与自相矛盾的参数它的定义。
【问题讨论】:
-
无论您的浮点数格式有多少位,它都是有限的,并且会舍入无法准确表示的常量。似乎
3.9999999999999999甚至在floor看到它之前就被舍入到4.0。
标签: haskell