有没有办法使用String Formatter我可以实现以下目的:
$ 52,152至$ 52.1
我有一系列数千个值,我想以上述格式显示它们。
由于
答案 0 :(得分:3)
这适用于$52.2
,使用,
number scaling specifier:
string.Format("{0:$0,.0}", 52152);
如果你真的想要52.1
,你可能必须“手动”做到这一点;抱歉。所有自定义格式字符串似乎都是圆的。
答案 1 :(得分:1)
在您的情况下,2个数字的非格式化版本本质上是不同的
52152 != 52.1
更好的解决方案可能是将正确的数字发送到用户界面,但如果没有,则可以使用,
缩放说明符 - 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
}
答案 2 :(得分:1)
这样的东西?
string input = "$52,152";
var number = long.Parse(input, NumberStyles.Currency);
string result = (number / 100L / 10m).ToString("C1");
解释。第一个除法是一个截断的整数除法。第二师是System.Decimal
师。
这假设一种文化(例如new CultureInfo("en-US")
),其中货币符号为"$"
,千位分隔符为","
。