我想从固定基数计算“我必须使用哪个数字的幂”,例如2.
我想找到一个数字的下一个(整数)幂,例如2 ^ 3 = 8 ==> get2Power 8 ==> 3
.
这很简单,但是 get2Power 10 ==> 4
自 2^3=8
作为下限和 2^4=16
作为上限,我想返回上限,4
.
通过简单的数学,我知道我可以用一些对数函数来计算功率,即 log(x) / log(2)
结果是双倍。但是我要下一个Integer
.
我的方法看起来像
get2Power :: Integer -> Integer
get2Power x
| x <= 0 = -1
| otherwise = round (log(x) / log (2))
失败的原因是缺少类型之间的一些转换。错误消息无助于了解我遗漏了什么。
有人可以帮我了解如何将 Double 结果转换为 Integer/int 吗?
最佳答案
对于登陆此页面的人来说,它的标题是“将 double 转换为整数”。 Haskell Prelude 中有三个函数可以提供帮助: round , floor和 ceiling .
下面是一个例子:
Prelude> let myFloat = 3.1415 :: Double
Prelude> let y = round myFloat :: Int
Prelude> y
3
Prelude> :type y
y :: Int
关于Haskell:将 Double 转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21399943/