千位分隔符的字符串格式

时间:2013-09-17 14:54:07

标签: c# string-formatting

有没有办法使用String Formatter我可以实现以下目的:

$ 52,152至$ 52.1

我有一系列数千个值,我想以上述格式显示它们。

由于

3 个答案:

答案 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")),其中货币符号为"$",千位分隔符为","