如何在小数点后返回2位数的浮点数?

时间:2011-09-15 18:05:24

标签: haskell floating-point pretty-print

我有一些简单的功能

f :: Float -> Float
f x = x

Prelude> f 5.00
5.0

为什么不5.00?我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:7)

如果您需要base的内容,请使用showGFloat

 > import Numeric
 > showGFloat (Just 2) 1.99438 ""
 "1.99"
 > :t showGFloat
 showGFloat :: RealFloat a => Maybe Int -> a -> ShowS

答案 1 :(得分:5)

您可以使用printf

printf "%.2f" (f :: Float)

答案 2 :(得分:0)

从 4.7.0.0 开始,可以使用 showGFloatAlt:

<块引用>

这和 showFFloat 一样,除了小数点总是被保证,即使不需要。

旧的 showGFloat 的文档并没有说总是保证小数点。

(但我在我的系统中实际上没有看到任何区别:

$ ghci
GHCi, version 8.6.4: http://www.haskell.org/ghc/  :? for help
Prelude> import Numeric
Prelude Numeric> showGFloat (Just 2) 5.0 ""
"5.00"
Prelude Numeric> showGFloatAlt (Just 2) 5.0 ""
"5.00"
Prelude Numeric> showGFloat Nothing 5.0 ""
"5.0"
Prelude Numeric> showGFloatAlt Nothing 5.0 ""
"5.0"

我想知道为什么...)