我喂一個文本框顯示我需要格式化這樣一個平衡的字符串值:格式化像貨幣,但沒有貨幣符號(C#)的雙精度值
###,###,###,##0.00
我可以使用value.ToString (「c」),但這會將貨幣符號放在它的前面。
任何想法如何在提供文本框來實現上述格式之前操縱字符串?
我試過了,沒有成功:
String.Format("###,###,###,##0.00", currentBalance);
非常感謝,
我喂一個文本框顯示我需要格式化這樣一個平衡的字符串值:格式化像貨幣,但沒有貨幣符號(C#)的雙精度值
###,###,###,##0.00
我可以使用value.ToString (「c」),但這會將貨幣符號放在它的前面。
任何想法如何在提供文本框來實現上述格式之前操縱字符串?
我試過了,沒有成功:
String.Format("###,###,###,##0.00", currentBalance);
非常感謝,
string forDisplay = currentBalance.ToString("N2");
如果貨幣格式給你你想要什麼,克隆與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));
}
}
另一種選擇是使用過程中的自定義數字格式字符串 - 這取決於你是否真的要鏡像完全是一個貨幣是什麼樣子,只是沒有符號,或控制數字的確切位置。
你試過:
currentBalance.ToString("#,##0.00");
這是長手等價的:
currentBalance.ToString("N2");
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
字符串結果=的String.Format(「{0:N2} 「,價值); //對於像### ### ## ##
結果您可以通過the group separator和the section separator做到這一點,是這樣的:
currentBalance.ToString("#,0.00;(#,0.00)");
此不考慮文化方差像答案@JonSkeet會,但是這確實可以模仿小數位,四捨五入,數千分隔和負數處理,en-US文化貨幣格式使用單個自定義格式字符串生成。
這可能是矯枉過正,但它大紅大紫,格式...
@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>
}
這種簡單的解決方案適用於我與美國貨幣。
如果不需要國際貨幣支持使用此,代之以貨幣符號(S)的$被刪除:
// for USD
string result = currentBalance.ToString("C").Replace("$", "")
或
// for EUR
string result = currentBalance.ToString("C").Replace("€", "")
這完美的作品。如果你想將貨幣格式化爲當前的文化,但沒有符號,這似乎是最好的解決方案。 – 2011-03-08 15:07:12
您可能會考慮在結果中添加一個Trim(),以確保您沒有前導(或尾隨)空格。 – 2012-02-07 14:30:57