作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
test_1 :: Int -> Int
test_1 y = 5 * 10 ^ (ceiling ( logBase 10 y ) ) + 100
这是错误消息:
parse.hs:23:22: error:
• No instance for (RealFrac Int) arising from a use of ‘ceiling’
• In the second argument of ‘(^)’, namely
‘(ceiling (logBase 10 y))’
In the second argument of ‘(*)’, namely
‘10 ^ (ceiling (logBase 10 y))’
In the first argument of ‘(+)’, namely
‘5 * 10 ^ (ceiling (logBase 10 y))’
parse.hs:23:32: error:
• No instance for (Floating Int) arising from a use of ‘logBase’
• In the first argument of ‘ceiling’, namely ‘(logBase 10 y)’
In the second argument of ‘(^)’, namely ‘(ceiling (logBase 10 y))’
In the second argument of ‘(*)’, namely
‘10 ^ (ceiling (logBase 10 y))’
Failed, modules loaded: none.
但是如果我简单地使用实数来尝试这个函数:
test = 5 * 10 ^ (ceiling ( logBase 10 1000 ) ) + 100
效果很好。
最佳答案
But if I try this function by simply using a real number:
test = 5 * 10 ^ (ceiling ( logBase 10 1000 ) ) + 100
这里1000
不被解释为Int
,而是被解释为Floating
类型。这是必要的,因为 logBase
的类型具有类型 logBase :: Floating a => a -> a -> a
.
您可以使用 fromIntegral :: (Integral a, Num b) => a -> b
将 Integral
类型(如 Int
)转换为 Num
类型。 :
test_1 :: Int -> Int
test_1 y = 5 * 10 ^ ceiling (logBase 10 <b>(fromIntegral y)</b>) + 100
但也许在整数空间中执行 log10 更有意义。
关于haskell - 如何使用Haskell吸顶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065105/
我是一名优秀的程序员,十分优秀!