ToString("N2")和ToString("0.00")之间的区别

55

ToString("N2")ToString("0.00") 有什么区别?


有人可以帮忙看一下我的问题吗:https://stackoverflow.com/q/77309614/2856597 这不仅仅是千位数的格式问题。 - undefined
6个回答

42

来自标准数值格式字符串

该数字被转换为字符串形式“-d,ddd,ddd.ddd…”,其中“-”表示必要时负数符号,“d”表示数字(0-9),逗号“,”表示数字组之间的千位分隔符,“.”表示小数点符号。

似乎N将包含千位分隔符,而0.00则不会。

另请参见自定义数值格式字符串


25

一切都关乎小数位

N2 对于500.00的显示方式与以前相同,但当您有5000.00时,N2 将会显示为

5,000.00

而不是

5000.00

请参考标准数字格式字符串获取更多信息。


3
这可以根据文化差异而改变。在巴西葡萄牙语中,它将是500,00和5.000,00。 - T. Sar

17

基本上,ToString("N2") 将使用 CultureInfo 格式化数字。这意味着您的千位分隔符可能会因使用的 CultureInfo 而不同。如果需要,您还可以传递所需的 CultureInfo


10

两者都给出两位小数,但如果您检查更大的数字,您可以轻松看到它们之间的差异:

var d = 1234567.89;
for (var i = 0; i < 10; ++i) {
    Console.WriteLine(d.ToString("N2") + "\t" + d.ToString("0.00"));
    d /= 10.0;
}

输出

1.234.567,89    1234567,89
123.456,79  123456,79
12.345,68   12345,68
1.234,57    1234,57
123,46  123,46
12,35   12,35
1,23    1,23
0,12    0,12
0,01    0,01
0,00    0,00

Execute code online at dotnetfiddle.net


3
千位分隔符是个问题。使用“n2”将得到3,543,而使用“0.00”将给你3543。逗号可能会破坏下游代码,特别是客户端JS需要将该值解析回十进制。

5
"N2" 实际上会打印出 "3,543.00"。 - Dror

-8

这里有一个例子来解释

int rupees=567.3423;
string rp=rupees.tostring("N2");

--答案是rp="567.34"; -- N2可记录两个小数位。


2
这个问题询问了ToString("N2")ToString("0.00")之间的区别,但这并没有在这个答案中涉及到。除此之外,这个答案是完全错误的,因为正如其他答案所解释的那样,N2会考虑到CultureInfo并添加千位分隔符。 - Wouter Vanherck
3
无论如何,整数不能有小数点。 - Sam Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接