簡體   English   中英

在Haskell中共同使用樓層和sqrt

[英]Joint use of floor and sqrt in Haskell

我希望我的函數讀取一個整數並將平方根向下舍入到最接近的整數。 這就是我嘗試過的:

roundSqrt :: Int -> Int
roundSqrt x = floor (sqrt x)  

我得到的錯誤是,“無法推斷(浮動a)因使用-sqrt'而產生的”,但我不明白這意味着什么。

sqrt的類型是:

λ> :t sqrt
sqrt :: Floating a => a -> a

地板的類型是:

λ> ::t floor
floor :: (RealFrac a, Integral b) => a -> b

因此, sqrt需要一個具有Floating約束的類型。 您可以使用fromIntegral函數來實現:

roundSqrt :: Int -> Int
roundSqrt x = floor (sqrt (fromIntegral x))  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM