文字列を数値に変換する際もカルチャに注意
2009年11月27日(金曜日)
文字列を数値に変換する際もカルチャに注意
公開: 2009年11月28日0時35分頃
こんなお話が: 「伊郵政金融、小数点処理のバグにより大混乱 (slashdot.jp)」。
イタリアでは位取りではなく小数点にカンマが使われるので、こういうコードを実行してみると……。
string s = "1,234"; Decimal invDecimal = Convert.ToDecimal(s, CultureInfo.InvariantCulture); Console.WriteLine(invDecimal); CultureInfo jp = CultureInfo.CreateSpecificCulture("ja-JP"); Decimal jpDecimal = Convert.ToDecimal(s, jp); Console.WriteLine("{0}: {1}", jp, jpDecimal); CultureInfo it = CultureInfo.CreateSpecificCulture("it-IT"); Decimal itDecimal = Convert.ToDecimal(s, it); Console.WriteLine("{0}: {1}", it, itDecimal);
結果はこうなると。
1234
ja-JP: 1234
it-IT: 1.234
文字列比較の時、カルチャに気をつけないと予想外の文字が同一視されて大変なことになるという話はよくありますが、文字列を数値に変換する際も要注意ということですね。
- 「文字列を数値に変換する際もカルチャに注意」にコメントを書く
- 前(古い): 大阪万博はある意味すごい
- 次(新しい): よつばと! 9