使 GHCi 以十进制形式打印。

Posted

技术标签:

【中文标题】使 GHCi 以十进制形式打印。【英文标题】:Make GHCi to print in decimal form. 【发布时间】:2018-05-13 05:21:43 【问题描述】:

有时科学记数法会让我认为我的结果不正确,直到我看到“e”(例如 2.1474027456e-2)。

如何让 GHCi 以十进制形式打印?

【问题讨论】:

How to override Show instance of some basic types in Haskell?的可能重复 密切相关:Haskell - how to avoid scientific notation in decimal output(可以说不是重复的*类别,因为它与 GHCi 输出无关)。 【参考方案1】:

只需使用printf

Prelude> import Text.Printf
Prelude> printf "%f\n" (0.0000001 * exp 1)
0.0000002718281828459045

也适用于数字列表:

Prelude> map (printf "%f" :: Float -> String) $ take 10 $ iterate (* exp (-1)) 1.0
["1.0","0.36787945","0.1353353","0.049787074","0.018315641","0.006737948","0.0024787525","0.0009118821","0.00033546268","0.00012340983"]

【讨论】:

以上是关于使 GHCi 以十进制形式打印。的主要内容,如果未能解决你的问题,请参考以下文章

tcpdump 正则过滤

PHP中怎么以二进制形式表示数字?

不同变量在内存中的存在形式(以16进制表示)

如何将十六进制字符串转换为十六进制数字

c语言打印一个整数的二进制形式

perl 第四弹 标量