有没有办法使用 String Formatter 我可以实现以下目标:
52,152 美元至 52.1 美元
我有一系列成千上万的值,我想以上述格式显示它们。
谢谢
有没有办法使用 String Formatter 我可以实现以下目标:
52,152 美元至 52.1 美元
我有一系列成千上万的值,我想以上述格式显示它们。
谢谢
这适用于$52.2
,使用,
数字缩放说明符:
string.Format("{0:$0,.0}", 52152);
如果你真的想要52.1
,你可能不得不“手动”做;对不起。所有自定义格式字符串似乎都是圆形的。
在您的情况下,您的 2 个数字的非格式化版本本质上是不同的
52152 != 52.1
更好的解决方案可能是将正确的数字发送到 UI,但如果没有,您可以使用,
缩放说明符 - http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#SpecifierTh
void Main()
{
decimal x = 52152M;
var a = string.Format("{0:C}", x); //Current Format in Local Culture
Console.WriteLine(a); //Prints €52,152.00
var b = string.Format("${0:00000}", x); //Custom Format, no decimals
Console.WriteLine(b);//Prints $52152
var c = string.Format("${0:###,###,###}", x); //Custom Format, no decimals + 1000 seperators
Console.WriteLine(c);//Prints $52,152
var d = string.Format("${0:###,###,.0}", x); //Custom Format, 1 decimal place, 1000 seperators to support values over 1 million
Console.WriteLine(d);//Prints $52.2
}
像这样的东西?
string input = "$52,152";
var number = long.Parse(input, NumberStyles.Currency);
string result = (number / 100L / 10m).ToString("C1");
解释。第一除法是截断的整数除法。二师是System.Decimal
师。
这假设一种文化(例如new CultureInfo("en-US")
),其中货币符号是"$"
,千位分隔符是","
。