Tieson が書いたようにF2
... C では、デフォルトのロケールは C ロケールであることを覚えておいてください。たとえば0.00
、C# ではデフォルトのロケールはユーザーの現在のロケール (ここではイタリア0,00
) です。したがって、次のようにすることをお勧めします。
string formatString = String.Format(CultureInfo.InvariantLocale,
"amount = {0:F2}", amount);
常にどこでも同じ方法で数字をフォーマットしたい場合。私が「ここイタリア」と言ったとき、「米国でイタリア語の Windows 8 を使用する場合、既定のロケールはイタリア語になる」という意味もあることに注意してください。
ああ...そしてlong double
C#(または.NET、またはその理由でVC ++の新しいバージョン)には s がありません。Sのみdouble
。
お金にa double
(または a )を使用することは、それ自体がアンチパターンであることを追加します...それにはdecimal型があります。long double
Decimal 値型は、正の 79,228,162,514,264,337,593,543,950,335 から負の 79,228,162,514,264,337,593,543,950,335 までの範囲の 10 進数を表します。Decimal 値タイプは、多数の有効な整数桁と小数桁を必要とし、丸め誤差がない財務計算に適しています。Decimal 型では、丸めが不要になるわけではありません。むしろ、丸めによるエラーを最小限に抑えます。たとえば、次のコードは、1 ではなく 0.9999999999999999999999999999 という結果を生成します。