我正在通过编写一个将美分价格转换为美元的程序来练习 Haskell。显然,这意味着我的 Int 需要变成 Double,但我希望我的最终输出是 String。我的代码:
首先,我定义了我的 Price
类型:type Price = Int
然后,我写了我的模块:
formatDollars :: Price -> String
formatDollars x = show (fromIntegral (x `div` 100))
我对
x
的测试输入是 188,这应该给我 1.88。但我的输出总是
"1"
.这让我觉得我的 fromIntegral 函数可能没有在我的代码中正确使用,就好像它在小数点后截断一样。由于我对 Haskell 还很陌生,我确信这是一个简单的错误;有人可以帮帮我吗?
最佳答案
188 `div` 100 == 1
您想转换为
Double
在进行除法之前。 (然后进行实数除法,而不是整数除法。)formatDollars x = show ((fromIntegral x) / 100)
关于Haskell - 将整数转换为 double ,然后是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755214/