このコード:Console.Out.WriteLine(string.Format(CultureInfo.GetCultureInfo("hu-HU"), "{0:C}", 1234.56M))
次の出力が生成されます: 1 234,56 Ft、これは技術的には正しいですが、通貨を推測するにはどうすればよいでしょうか??
この動作は、表示カルチャを hu-HU から en-US に変更するだけで、現在のレートに応じて、値が 200 倍以上になることを意味します。500 USD の代わりに 500 HUF を請求する間違いはありません。明らか。
通貨を設定する唯一の「良い」方法は、目的のカルチャを複製して通貨記号を設定することです。
var format = NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo("en-US")).Clone() as NumberFormatInfo;
format.CurrencySymbol = "asd";
Console.Out.WriteLine(string.Format(format, "{0:C}", 1234.56M));
これは正しい生成asd1,234.56
で機能しますが、非常に面倒です。
私の質問は次のとおりです。
- 私たちが何十年も生きてきたこのグローバルな世界で、国の通貨のデフォルト率はどのくらいですか?
- 金額と通貨は非常に結びついているのに、より関連性のある方法で指定する方法がないのはなぜですか?
- おまけ: 文化に sk-SK を使用すると、「既定の」通貨でユーロが得られます。フレームワーク 2.0 に変更すると
Sk
、2005 年にスロバキア コルナが国の通貨だったので、(スロバキア コルナの場合) 取得する必要があります。(まあ、それは起こりません。しかし、2.0以降のシステムでは試していません。)
更新: 結論:
- 文化から通貨をデフォルトにすることは、一部の人にとってはすべて正常であり、他の人にとっては奇妙です(私を含む)
- 長さ、重さなどの種類がないので「金額」の種類はありませんが、限度額はどこですか?Virtlink はこのためのライブラリを作成しました: M42 Financial