Haskell - 如何避免十进制输出中的科学记数法

Ian*_*art 3 haskell number-formatting

我需要将数字列表除以100来打印,例如:

map (/100) [29, 3, 12]
Run Code Online (Sandbox Code Playgroud)

生产:

[0.29,3.0e-2,0.12]
Run Code Online (Sandbox Code Playgroud)

但是我需要:

[0.29,0.03,0.12]
Run Code Online (Sandbox Code Playgroud)

我如何在Haskell中执行此操作?任何想法真的很感激.

Zet*_*eta 6

0.03并且3.0e-2是相同的数字.在内部,GHC用于showFloat打印它,只要绝对值超出0.1和9,999,999的范围,就会产生科学记数法.

因此,您必须自己打印值,例如使用printffrom Text.PrintfshowFFloatfrom Numeric:

import Numeric

showFullPrecision :: Double -> String
showFullPrecision x = showFFloat Nothing x ""

main = putStrLn (showFullPrecision 0.03)
Run Code Online (Sandbox Code Playgroud)

根据您所需的输出,您需要编写更多功能.