我执行字符串格式数与三段为
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只是编辑说, –