gpt4 book ai didi

haskell - 将两个 Int 值相除以获得 Float 的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 09:09:56 25 4
gpt4 key购买 nike

我想分两个 Int Haskell 中的值并获得结果为 Float .我试着这样做:

foo :: Int -> Int -> Float
foo a b = fromRational $ a % b

但 GHC(版本 6.12.1)告诉我“无法将预期类型 'Integer' 与推断类型 'Int' 匹配”关于 a在表达式中。

我明白为什么: fromRational通话需要 (%)制作 Ratio Integer ,所以操作数必须是 Integer 类型而不是 Int .但我要划分的值与 Int 相去甚远。范围限制,因此使用任意精度的 bignum 类型似乎有点矫枉过正。

这样做的正确方法是什么?我应该调用 toInteger吗?在我的操作数上,还是有一种我不知道的更好的方法(可能不涉及 (%) 和比率)?

最佳答案

您必须先将操作数转换为浮点数,然后再除,否则您将执行整数除法(无小数位)。

简洁的解决方案(需要 Data.Function )

foo = (/) `on` fromIntegral

这是缩写
foo a b = (fromIntegral a) / (fromIntegral b)


foo :: Int -> Int -> Float

关于haskell - 将两个 Int 值相除以获得 Float 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3275193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com