相关疑难解决方法(0)

Haskell logbase错误

我试图使用长度等于的事实来计算Haskell中Integer的长度truncate (log10(x)+1).

使用我创建的整数:

len :: Integer -> Integer
len i = toInteger (truncate (logBase 10 (fromIntegral i)) + 1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,并非所有数字都得到正确的长度.我尝试了几个不同的案例,发现:

logBase 10 10         = 1.0
logBase 10 100        = 2.0
logBase 10 1000       = 2.9999..6
logBase 10 10000      = 4.0
logBase 10 100000     = 5.0
logBase 10 1000000    = 5.9999999
Run Code Online (Sandbox Code Playgroud)

有没有理由logBase 10 1000不返回3.0?如何在基数10中获得1000的正确日志值?

haskell logarithm rounding-error

7
推荐指数
1
解决办法
825
查看次数

标签 统计

haskell ×1

logarithm ×1

rounding-error ×1