Mat*_*ins 3 haskell floor sqrt
我希望我的函数读取一个整数并将平方根向下舍入到最接近的整数.这就是我尝试过的:
roundSqrt :: Int -> Int
roundSqrt x = floor (sqrt x)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是,"无法推断(浮动a)因使用-sqrt'而产生的",但我不明白这意味着什么.
sqrt的类型是:
?> :t sqrt
sqrt :: Floating a => a -> a
Run Code Online (Sandbox Code Playgroud)
地板的类型是:
?> ::t floor
floor :: (RealFrac a, Integral b) => a -> b
Run Code Online (Sandbox Code Playgroud)
所以,sqrt需要一个有Floating约束的类型.您可以使用该fromIntegral功能来实现:
roundSqrt :: Int -> Int
roundSqrt x = floor (sqrt (fromIntegral x))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |