0

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

52,152 美元至 52.1 美元

我有一系列成千上万的值,我想以上述格式显示它们。

谢谢

4

3 回答 3

3

这适用于$52.2,使用,数字缩放说明符

string.Format("{0:$0,.0}", 52152);

如果你真的想要52.1,你可能不得不“手动”做;对不起。所有自定义格式字符串似乎都是圆形的。

于 2013-09-17T15:05:33.207 回答
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

}
于 2013-09-17T15:07:22.883 回答
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")),其中货币符号是"$",千位分隔符是","

于 2013-09-17T15:10:54.327 回答