假设我们有2个数字,2.0和2.1。有一种简单的方法可以将它们分别显示或转换为" 2"和" 2.1"?
当然我可以做,例如showFFloat(Just 0)2""或showFFloat Nothing 2"",但是我为每个参数使用不同的参数,所以解决方案不适用于这两个数字。
例如,我可以在显示2.0和2.1之后从字符串的末尾删除" .0"(如果存在),这样可行,但它并不简单。许多其他解决方案解决了这个问题,但我无法想到一个简单的解决方案。答案 0 :(得分:4)
打印浮点数为surprisingly hard task。我所知道的base
包中唯一的实现是floatToDigits,尽管它返回数字而不是字符串:
Prelude Numeric> floatToDigits 10 2.0
([2],1)
Prelude Numeric> floatToDigits 10 2.1
([2,1],1)
(结果的第二个成分是指数。)