【发布时间】:2010-12-22 05:04:59
【问题描述】:
ToString("N2") 和 ToString("0.00") 有什么区别?
【问题讨论】:
标签: c# formatting
ToString("N2") 和 ToString("0.00") 有什么区别?
【问题讨论】:
标签: c# formatting
都是关于小数位的
N2 对 500.00 的工作方式相同,但是当您有 5000.00 时,N2 将显示为
5,000.00
而不是
5000.00
更多信息请参见Standard Numeric Format Strings。
【讨论】:
两者都给你两位小数,但如果你检查更大的数字,你可以很容易地看到差异:
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
【讨论】:
基本上,ToString("N2") 将使用CultureInfo 来格式化数字。这意味着您的千位分隔符可能会因使用的CultureInfo 而不同。如果需要,您也可以传递所需的CultureInfo。
【讨论】:
来自Standard Numeric Format Strings
数字转换为字符串 形式为“-d,ddd,ddd.ddd…”,其中 '-' 表示负数符号 if 必填,“d”表示数字 (0-9), ',' 表示千位分隔符 在数字组和“。”之间 表示小数点符号。
似乎N 将包含千位分隔符,而0.00 不会。
【讨论】:
千位分隔符是个问题。使用“n2”将为您提供 3,543,而使用“0.00”将为您提供 3543。逗号可以分解可能必须将该值解析回小数的下游代码,尤其是客户端 js。
【讨论】:
这里举例说明
int rupees=567.3423;
string rp=rupees.tostring("N2");
--答案是rp="567.34";
-- N2 最多给出两个十进制记录。
【讨论】:
ToString("N2") 和ToString("0.00") 之间的区别,此答案未涵盖。除此之外,答案是直接错误的,因为N2,正如其他答案所解释的那样,将牢记CultureInfo,并将添加数千个分隔符。