What is the difference between ToString("N2")
and ToString("0.00")
?
问题:
回答1:
From Standard Numeric Format Strings
The number is converted to a string of the form "-d,ddd,ddd.ddd…", where '-' indicates a negative number symbol if required, 'd' indicates a digit (0-9), ',' indicates a thousand separator between number groups, and '.' indicates a decimal point symbol.
It would seem that N
will include thousands separators, whereas 0.00
will not.
See also Custom Numeric Format Strings
回答2:
Basically, ToString("N2")
will use the CultureInfo
to format the number. This means that your thousands separator might be different depending on the used CultureInfo
. You can also pass the desired CultureInfo
if you want.
回答3:
It's all about the decimal places
N2
will work the same way for 500.00, but when you have 5000.00, N2
will display as
5,000.00
instead of
5000.00
See Standard Numeric Format Strings for more information.
回答4:
The thousand separator is an issue. Using "n2" will give you 3,543 where using "0.00" will give you 3543. The comma can break down-stream code that might have to parse that value back to a decimal, especially client-side js.
回答5:
Both give you two decimal places, but you can see the difference easily if you check larger numbers:
var d = 1234567.89;
for (var i = 0; i < 10; ++i) {
Console.WriteLine(d.ToString("N2") + "\t" + d.ToString("0.00"));
d /= 10.0;
}
outputs
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
回答6:
Here is example to explain
int rupees=567.3423;
string rp=rupees.tostring("N2");
--Answer is rp="567.34";
-- N2 gives upto two decimal records.