32

次のコードスニペットを使用します。

(fromIntegral 100)/10.00

Haskell '98標準プレリュードを使用して、結果を小数点以下2桁で表すにはどうすればよいですか?

ありがとう。

4

2 に答える 2

56

記録のために:

import Numeric 
formatFloatN floatNum numOfDecimals = showFFloat (Just numOfDecimals) floatNum ""
于 2010-02-24T16:56:23.130 に答える
25

printf :: PrintfType r => String -> rから使用できますText.Printf

Prelude> import Text.Printf
Prelude Text.Printf> printf "%.2f\n" (100 :: Float)
100.00
Prelude Text.Printf> printf "%.2f\n" $ fromIntegral 100 / 10.00
10.00

%f2番目の引数を浮動小数点数としてフォーマットします。%.2f小数点以下2桁のみを印刷する必要があることを示します。\n改行を表します。この例では必ずしも必要ではありません。

この関数は、コンテキストに応じて、タイプStringまたはの値を返すことに注意してください。IO aデモンストレーション:

Prelude Text.Printf> printf "%.2f" (1337 :: Float) ++ " is a number"
"1337.00 is a number"

この場合、結果は引数として、リスト引数を期待する関数であるに渡されるため、printf文字列を返します(これはと同じであることに注意してください)。そのため、他の言語と同じように動作します。もちろん、2番目の文字列を追加するなどのトリックは必要ありません。タイプを明示的に指定できます。"1337.00"(++)String[Char]printfsprintf

Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: IO a  
1337.00
Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: String
"1337.00\n"
于 2009-10-13T11:21:12.480 に答える