0

moneyデータ型として保存され、次のコードを持つDB にいくつかの価格があります。

result.RangeMinimum = (decimal)ad.RangeMinimum;
result.RangeMaximum = (decimal)ad.RangeMaximum;

出力は次のとおりです。

3800042000

38, 000.00 理想的には、私が欲しいのは次の ようなものです: 42, 000.00

どうすればこれを達成できますか?つまり、.NET フレームワークなどに組み込まれている既存のクラスが既に存在するのでしょうか。

4

6 に答える 6

3

「正確に」指定し、カンマの後にスペースがあるため、標準の数値形式は機能しないようです。を使用して、独自のフォーマットを簡単にカスタマイズできますString.Format

Decimal number = 38000.01m;
string formatted = string.Format(CultureInfo.GetCultureInfo("en-US"), "{0:#, ###.00}", number);
// formatted now contains "38, 000.01"

出力は次のとおりです。38, 000.01

米国以外の市民がアプリを楽しめるように、必ず cultureinfo を覚えておいてください。:)

Custom Numberic Format を使用した書式設定に関する情報は、MSDNにあります。

末尾の 00 に注意してください。これらは 2 桁を強制します。用途によっては、この動作が必要な場合と不要な場合があります。必要に応じて ## に置き換えます。また、これをループで使用する場合は、string.Format への呼び出しごとにカルチャ ルックアップを行わないでください。

于 2012-06-27T09:32:15.503 に答える
3

達成したいことは、カスタム数値形式、つまり ToString()メソッドまたはメソッドString.Format()に対して行うことができます

MDSN カスタム数値形式

于 2012-06-27T09:19:00.667 に答える
2

次のようにフォーマットできます

string.Format("{0:#,#.##}", decimalValue)
于 2012-06-27T09:22:15.243 に答える
2
string currencyString = result.RangeMinimum.ToString("C", CultureInfo.CurrentCulture);
于 2012-06-27T09:22:24.527 に答える
2

これを試して

result.ToString("N");

CultureInfo.InvariantCultureu を使用すると、独自の形式を定義できます

于 2012-06-27T09:24:15.350 に答える
1

10 進数を試してください ad.RangeMinimum = Decimal.Parse(result.RangeMinimum.ToString("#0.00"));

于 2012-06-27T09:27:32.227 に答える