每当我使用双精度和整数编写函数时,都会发现这个问题,我必须在函数中的任何地方不断使用'fromIntegral'。例如:

import Data.List

roundDouble
    :: Double
    -> Int
    -> Double
roundDouble x acc = fromIntegral (round $ x * 10 ** fromIntegral acc) / 10 ** fromIntegral acc

有没有更简单的写方法? (我知道可能会有更简单的方法将数字四舍五入,如果有,请告诉我!但是我主要对如何避免使用太多的'fromIntegrals'感兴趣。)

谢谢,Ash

最佳答案

有时我发现一个辅助函数很有用:

roundDouble x acc = (round $ x * 10 ^ acc) /. (10 ^ acc)
    where
    x /. y = fromIntegral x / fromIntegral y

该辅助函数也可以编写为:
(/.) = (/) `on` fromIntegral

其中on来自Data.Function

关于haskell - Haskell中fromIntegral的过度使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3453608/

10-11 14:14