web-dev-qa-db-ja.com

c#通貨の文字列の10進数

通貨を表示するには:

ToString("0.##")

5.00出力は次のとおりです。

5

5.98出力は次のとおりです。

5.98

5.90出力は次のとおりです。

5.9

小数点以下2桁の3番目のケースが必要です。例:

5.90

他の結果に影響を与えずにこれを行うにはどうすればよいですか?

17
Tom Gullen

これで問題を解決する形式が得られないことはわかっていますが、それを回避する簡単な解決策です。

(5.00).ToString("0.00").Replace(".00","");  // returns 5
(5.90).ToString("0.00").Replace(".00", ""); // returns 5.90
(5.99).ToString("0.00").Replace(".00", ""); // returns 5.99
18
Zachary

試してください:

s.ToString("#,##0.00")

あるいは単に:

s.ToString("C")

両方がゼロでない場合にのみ、小数点以下2桁をすべて拡張する組み込みの方法はありません。おそらくifステートメントを使用するだけでしょう。

int len = s.Length;
if (s[len - 2] == '0' && s[len - 1] == '0')
    s = s.Left(len - 3);
15
Jonathan Wood

次のような拡張メソッドを使用できます。

public static string ToCurrencyString(this decimal d)
{
    decimal t = Decimal.Truncate(d);
    return d.Equals(t) ? d.ToString("0.##") : d.ToString("#, ##0.00")
}
11
Clark

#は、数字がない場合は空のままにすることを意味します0数字がない場合は0を入力します

ToString( "0.00")

8
ahaliav fox

私が何かを見逃しているかどうかはわかりませんが、あなたはこれを行うことはできません:

decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
1
gcoleman0828