17

10進数の解析に単純な問題があります。次のコードは私のコンピューターでは問題なく動作しますが、サーバー (VPS、Windows Server 2008 R2 標準版) でプロジェクトを公開すると、「入力文字列の形式が正しくありません」というエラーが表示されます。何が問題なのですか?

その解析された数値をMySQL DBテーブルに保存します-列のタイプはDECIMAL(10, 4)

ソースコード:

CultureInfo nonInvariantCulture = new CultureInfo("en-AU"); //or pl-PL
nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = nonInvariantCulture;
string toConvert = ("3,4589").Replace(",", "."); //it's an example
decimal parsed = decimal.Parse(toConvert);
4

3 に答える 3

38

数値の文字列表現でカンマを小数点記号として使用していることがわかっている場合は、カスタムを使用して値を解析できますNumberFormatInfo

var number = "3,4589";
var numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = "," };
var value = Decimal.Parse(number, numberFormatInfo);

CultureInfoあなたが知っている文化のために既存のものを使用することもできますpl-PLが、私はこれが理解しやすいと思います.

一方、数値の形式3.4589が単純に使用できる場合CultureInfo.InvariantCultureは、に基づいて一種の「デフォルト」カルチャと見なすことができますen-US

var number = "3.4589";
var value = Decimal.Parse(number, CultureInfo.InvariantCulture);
于 2013-04-09T08:47:12.320 に答える
4

以下のコードを回避するには、問題を解決すると思います。

decimal parsed = decimal.Parse(toConvert, CultureInfo.InvariantCulture);
于 2013-04-09T08:55:28.967 に答える