DB からの金額の文字列値があります。私のシステムのローカル文化はポルトガル語 (pt-br) です。その結果、10 進値の金額は、たとえば 3.4 の場合は 3,4 と読み取られます。3.4 が表示されるようにこれを解析する必要がありますが、代わりに何を試しても 34 になります。解決策をあらゆる場所で検索し、以下を実装しようとしましたが、無駄でした。
// ここで、row[item.columnName] は、ループしている DataTable の行です
解決策 1:
Double amt = Double.Parse(Convert.ToString(row[item.columnName]), CultureInfo.InvariantCulture);
解決策 2:
CultureInfo usCulture = new CultureInfo("en-US");
NumberFormatInfo dbNumberFormat = usCulture.NumberFormat;
Double amt = Double.Parse(Convert.ToString(row[item.columnName]), dbNumberFormat);
どちらも機能していないようです。これを達成できる他の方法があれば、誰かが提案できますか?
編集:
DB から取得している値が 10 進数であることが判明したため、LOC を以下に変更しました。
decimal d = decimal.Parse(Convert.ToString(row[item.columnName]),new System.Globalization.CultureInfo("pt-BR", false));
まだ機能していないようで、どこが間違っているのかわかりません。DotNetFiddleで同じことを試してみましたが、 まったく問題なく動作します。以下は私が試したコードです。
using System;
public class Program
{
public static void Main()
{
decimal d = decimal.Parse("1,35",new System.Globalization.CultureInfo("pt-BR", false));
Console.WriteLine(d.ToString());
}
}
得られた結果は、予想どおり 1.35 でした。私は何を間違っていますか?