54

次のようにフォーマットする必要があるバランスを示す文字列値をテキストボックスにフィードします。

###,###,###,##0.00

value.ToString( "c")を使用することもできますが、これにより、その前に通貨記号が表示されます。

上記のフォーマットを実現するためにテキストボックスにフィードする前に文字列を操作する方法はありますか?

私はこれを試しましたが、成功しませんでした:

String.Format("###,###,###,##0.00", currentBalance);

どうもありがとう、

4

9 に答える 9

69

通貨の書式設定で希望どおりの結果が得られる場合は、 を with で複製し、プロパティを "" にNumberFormatInfo設定します。CurrencySymbolもちろん、負の数を希望どおりに処理することも確認する必要があります。

例えば:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = CultureInfo.CurrentCulture.NumberFormat;
        nfi = (NumberFormatInfo) nfi.Clone();

        Console.WriteLine(string.Format(nfi, "{0:c}", 123.45m));
        nfi.CurrencySymbol = "";
        Console.WriteLine(string.Format(nfi, "{0:c}", 123.45m));
    }
}

もう 1 つのオプションは、もちろんカスタムの数値書式文字列を使用することです。それは、通貨がどのように見えるかを記号なしで正確にミラーリングするか、数字の正確な位置を制御するかによって異なります。

于 2009-06-26T11:39:17.990 に答える
65
string forDisplay = currentBalance.ToString("N2");
于 2009-06-26T11:39:35.527 に答える
11

やってみました:

currentBalance.ToString("#,##0.00");

これは、次のものと等価です。

currentBalance.ToString("N2");
于 2009-06-26T11:40:33.790 に答える
5

string result = string.Format( "{0:N2}"、value); // ########。##のような結果の場合

于 2010-10-20T08:36:55.303 に答える
4

次のように、グループセパレーターセクションセパレーターを使用してこれを行うことができます。

currentBalance.ToString("#,0.00;(#,0.00)");

これは、@JonSkeet からの回答のようなカルチャの差異を考慮していませんが、単一のカスタム フォーマット文字列を使用して en-US カルチャ通貨形式が生成する小数点以下の桁数、丸め、千単位の区切り、および負の数の処理を模倣しています。

.NET フィドルのデモ

于 2015-03-11T16:03:27.577 に答える
2
CultureInfo cultureInfo = new CultureInfo("en-US");
cultureInfo.NumberFormat.CurrencySymbol = "Rs.";

Thread.CurrentThread.CurrentCulture = cultureInfo;
decimal devimalValue = 3.45M;
this.Text = devimalValue.ToString("C2"); //Rs.3.45
于 2010-10-11T09:24:28.803 に答える
0

これはやり過ぎかもしれませんが、丸め、フォーマット...

@helper TwoDecimalPlaces(decimal? val)
{
    decimal x = 0;
    decimal y = 0;
    string clas = "text-danger";
    if (val.HasValue)
    {
        x = (decimal)val;
        if (val > 0)
        {
            clas = "";
        }
    }
    y = System.Math.Round(x, 2);
    IFormatProvider formatProvider = new System.Globalization.CultureInfo(string.Empty);
    <span class="@clas">@string.Format("{0:N2}", y)</span>
}
于 2016-11-30T20:49:44.860 に答える