haskell - 在 Haskell 中将整数转换为 double

标签 haskell numbers

我想在一年内实现复合增长,但我不在乎小数点,所以我尝试了

take 52 $ iterate (floor . (*1.1)) 100

问题是 (floor . (*1.1)) 的类型是 Double -> Integer , 而 iterate 的第一个 arg 所期望的类型是 a -> a .

我尝试了几种方法,但最终把自己打成结。

在函数应用程序中保持数字类型一致的首选解决方案是什么?

最佳答案

转换 Int 的常用方法到 Double是使用fromIntegral ,其类型为 (Integral a, Num b) => a -> b .这意味着它转换了 Integral类型( IntInteger )到任何数字类型 b ,其中Double是一个实例。

您的情况听起来像是要转换 DoubleInt ,我会推荐 floor为,但您必须确保您的输入是 Double .为此,您可以使用 fromIntegral功能与

take 52 $ iterate (floor . (* 1.1) . fromIntegral) 100

但是,这会给您带来不准确的结果,因为您在每一步都进行了截断。我建议做

take 52 $ map floor $ iterate (* 1.1) $ fromIntegral 100

关于haskell - 在 Haskell 中将整数转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280844/

相关文章:

algorithm - 找到一个数在达到 1 之前可以被 2 除多少次的最有效算法 [注 : if possible in O(1) time]

c++ - 如何确保在 Windows 10 上将数字呈现为阿拉伯数字?

haskell - 如何迭代具有相同类型的记录类型中的所有元素(记录类型的纯函数迭代器)

haskell - 我们在 Coyoneda 上申请的 "natural transformations"是为了得到一个 Functor 实际上是 "natural transformations"吗?

haskell - 为什么 MLF 中有弹性和刚性边界?

ios - 用于负数输入字段的 NativeScript 键盘

php - 测量整数的长度(当解释为八进制数时)

haskell - 将 haskell 平台更新到最新版本的最流畅方法是什么?

Haskell 编码风格 : map, fmap 或 <$>?

swift - 你怎么能在swift中将一个数字 append 到一个double