我正在通过编写将价格转换为美分的程序来练习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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句