强制签名和本地化千人分隔符

时间:2017-02-26 17:46:31

标签: c# string-formatting

希望这是一个简单的答案,尽管网络搜索还没有产生任何效果。

要格式化数千个数字,您只需使用:

 var output = String.Format("{0:n0}", 1000000);
 // Output 1,000,000 or 1.000.000 depending on Culture

要格式化数字以始终在前面显示标记,您可以使用:

 var output = String.Format("{0:+0;-0;+0}", 1);
 // Output +1;

 var output = String.Format("{0:+0;-0;+0}", -1);
 // Output -1;

那么如何使用符号和千位分隔符格式化数字?

逻辑上它应该是这样,但它不起作用:

 var output = String.Format("{0:+n0;-n0;+0}", -1000000);

 // Expected output -1,000,000
 // Actual output -n10000000

是否有允许这样的格式字符串并且尊重当前区域设置,其中千位分隔符可以是.,

2 个答案:

答案 0 :(得分:1)

您可以将部分说明符;与自定义说明符,结合使用:

  

例如,如果字符串"#,#"并且使用不变文化来格式化数字1000,输出为" 1,000"。

var output = String.Format("{0:+#,#;-#,#;0}", 1000000);

答案 1 :(得分:0)

你可以尝试一下:

int num = -5000000;
        Console.WriteLine(num.ToString("N0"));
编辑:道歉!我只关注负面符号。试一试:

string format = "+##,#;-##,#";
        int num = -5000000;
        int num2 = 5000000;
        Console.WriteLine(num.ToString(format));
        Console.WriteLine(num2.ToString(format));