4

テキストボックスの入力文字列は、たとえば $10.00 です。電話する

decimal result;
var a = decimal.TryParse(text, NumberStyles.AllowCurrencySymbol, cultureInfo, out result);

cultureInfo知られている ( en-US)。なぜdecimal.tryParsefalse を返しますか?

ありがとうございました。

4

3 に答える 3

10

問題は、通貨記号自体を許可しましたが、それを正しく解析するために必要な他のプロパティ (小数点など) を省略したことです。実際に必要なのは次のNumberStyles.Currencyとおりです。

decimal.TryParse("$10.00", NumberStyles.Currency, cultureInfo, out result);
于 2013-06-03T13:41:02.433 に答える
2

これを試してください。引数NumberStyles.Numberの値のビットごとの組み合わせに含める必要があります。style

decimal result;
var a = decimal.TryParse(text, NumberStyles.Number | NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
于 2013-06-03T13:40:29.603 に答える
0

小数点も許可するのを忘れました:

decimal result;
var enUS = new System.Globalization.CultureInfo("en-US");
var a = decimal.TryParse("$10.00", System.Globalization.NumberStyles.AllowCurrencySymbol | System.Globalization.NumberStyles.AllowDecimalPoint , enUS, out result);

Console.WriteLine(enUS);
Console.WriteLine(a);
Console.WriteLine(result);
于 2013-06-03T13:44:56.827 に答える