格式化双

时间:2016-09-13 18:53:53

标签: c# formatting double

我有这个大号(double):123456789012345.012345

应使用123.456.789.012.345,01格式表示为:pt-BR

这是我正在使用的格式{0:###,###,###,###,##0.00},但结果如下:

enter image description here

如您所见,在13个字符后,格式开始围绕小数位。如何在没有舍入的情况下正确显示数字?

2 个答案:

答案 0 :(得分:3)

double只有15-16位精度,因此之后的任何有效数字都会被截断。

decimal具有28-29位精度,如果您需要将该数字表示为十进制数而不会丢失任何精度,则应使用该数字。

答案 1 :(得分:2)

decimal numb = 123456789012345.012345m;
string strNumb = string.Format(new CultureInfo("pt-BR"), "{0:###,###,###,###,##0.00}", numb);
string strNumb2 = string.Format(new CultureInfo("pt-BR"), "{0:###,###,###,###,##0.00}", 123456789012345.012345m);

您可以使用小数而不是双倍。