[英]Round IO Double to specified number of digits - Haskell
有辦法舍入IO Double
嗎? 我在尋找一個功能:
ownRound :: IO Double -> IO Double
這些單元測試:
ownRound 0.51 == 0.5
ownRound 0.49 == 0.5
ownRound 0.5 == 0.5
ownRound 0.7132 == 0.7
ownRound 0.39 == 0.4
您所要的東西無法滿足。 您編寫的測試用例用於該功能
tensRound :: Double -> Double
但是您編寫的類型簽名用於該功能
ownRound :: IO Double -> IO Double
如果您打算將測試用例編寫為
ownRound (return 0.51) == return 0.5
ownRound (return 0.49) == return 0.5
依此類推,將每個數字都包裝到IO中,那么這些實現將起作用:
tensRound :: Double -> Double
tensRound d = fromInteger (round (d*10)) / 10
ownRound :: IO Double -> IO Double
ownRound = fmap tensRound
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.