次のコードスニペットを使用します。
(fromIntegral 100)/10.00
Haskell '98標準プレリュードを使用して、結果を小数点以下2桁で表すにはどうすればよいですか?
ありがとう。
次のコードスニペットを使用します。
(fromIntegral 100)/10.00
Haskell '98標準プレリュードを使用して、結果を小数点以下2桁で表すにはどうすればよいですか?
ありがとう。
記録のために:
import Numeric
formatFloatN floatNum numOfDecimals = showFFloat (Just numOfDecimals) floatNum ""
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
%f
2番目の引数を浮動小数点数としてフォーマットします。%.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]
printf
sprintf
Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: IO a
1337.00
Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: String
"1337.00\n"