-1

私は、正、負、およびゼロの値を持つことができる小数型のパラメータ価格を持っています。値に小数はありませんが、小数を表示する必要があります。

10 進数を解析している間、0 および > 0 の値は処理されますが、負の値は処理されません。1回の解析操作で3つすべてを処理するにはどうすればよいですか?

decimal.Parse(a.price.ToString("##.00"), NumberStyles.AllowDecimalPoint)

データをヨーロッパの文化で表示するように変換する必要があるため、-3.00 の値は -3,00 として表示されます。

これが私が試みていることであり、例外が発生します

var culture = CultureInfo.GetCultureInfo("nl-NL");
Price = a.GroupId == g ? decimal.Parse(a.BidPrice.ToString("##.000",  culture), NumberStyles.Number) : decimal.Parse(decimal.Zero.ToString("##.000",  culture), NumberStyles.Number)

タイプ 'System.FormatException' の初回例外が mscorlib.dll で発生しました

追加情報: 入力文字列の形式が正しくありませんでした。

いくつかのテストデータを追加し、

3 should show up as 3,00
-3 should show up as -3,00
0 should show up as 0,00

編集 デフォルトのカルチャは en-GB です

4

1 に答える 1

3

試してみてくださいNumberStyles.Number、うまくいきます:

decimal price = -3;
decimal result = decimal.Parse(price.ToString("##.00"), NumberStyles.Number);
//Result: -3,00 (comma because I live in Europe :D)

お役に立てれば!

編集:

コンマを確実に使用するには、ドイツの CultureInfo を使用します。これは、小数点にコンマを使用し、千の区切り記号としてピリオドを使用するためです。

decimal price = -3;
decimal result = decimal.Parse(price.ToString("##.00", CultureInfo.GetCultureInfo("de-DE")), NumberStyles.Number);
于 2013-07-03T09:45:31.550 に答える