每当我使用双精度和整数编写函数时,都会发现这个问题,我必须在函数中的任何地方不断使用'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/