我執行字符串格式數與三段爲
DataFormatString="{}{0:$#,##0.00;($#,##0.00);''}"
即:
input 120 result $120.00
input -120 result ($120.00)
input 0 result ''
的問題是美元符號是硬編碼的,我想我的應用程序全球化。我試過這樣的事情:
DataFormatString="{}{0:C;C;''}"
但它沒有幫助。
我執行字符串格式數與三段爲
DataFormatString="{}{0:$#,##0.00;($#,##0.00);''}"
即:
input 120 result $120.00
input -120 result ($120.00)
input 0 result ''
的問題是美元符號是硬編碼的,我想我的應用程序全球化。我試過這樣的事情:
DataFormatString="{}{0:C;C;''}"
但它沒有幫助。
您可以使用string.Format
過載與IFormatProvider
像這樣:
string DataFormatString="{0:C}";
string output = string.Format(CultureInfo.CreateSpecificCulture("culture"),DataFormatString,input)
然而,隨着Soner格尼爾指出,這仍然不會產生 '' 作爲輸出0
據我所知,沒有直接格式來提供這3個輸入結果。
對於前兩種格式,則可以使用與The "C"
format specifier培養en-US
使用2
作爲精度說明像(其具有$
作爲CurrencySymbol
);
(120).ToString("C2", CultureInfo.GetCultureInfo("en-US")) // $120.00
(-120).ToString("C2", CultureInfo.GetCultureInfo("en-US")) // ($120.00)
但0
,這產生$0.00
這是不是你想要的。
作爲更好的解決方案,請檢查Enigmativity's answer而不是處理0
值。
也許嘗試採取這種做法:
var DataFormatString="$#,##0.00;($#,##0.00);''";
var amount = 1342.56m;
var formatted =
amount
.ToString(DataFormatString)
.Replace("$", CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
唯一的缺點是,它不會正確地放置貨幣符號在號碼的末尾,如果這是該貨幣的標準。
不幸的是,這個_still_爲'0'生成'$ 0.00' :( –
@SonerGönül只是編輯說, –