关于数字格式:当将double转换为字符串时,如何在c#中将其四舍五入到n个小数位?

When converting double to string, how can I round it up to N decimal places in C#?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Round a double to 2 significant figures after decimal point

我最多需要N个小数,不再需要了,但我不想尾随零。例如,如果n=2,则

15.352
15.355
15.3
15

应该变成(分别)

15.35
15.36
15.3
15


试试Math.Round(value, 2).ToString()

1
2
3
4
Math.Round(15.352, 2).ToString();  //15.35
Math.Round(15.355, 2).ToString();  //15.36
Math.Round(15.3, 2).ToString();    //15.3
Math.Round(15.0, 2).ToString();    //15

Round的第二个参数用于指定要舍入到的小数位数。默认情况下,它将被舍入。


这可以通过使用自定义格式字符串来完成,例如"0.",它最多显示两位小数。

1
String.Format("{0:0.##}", 123.4567);      //"123.46"

参考:http://www.csharp-examples.net/string-format-double/


Google确实是带头:使用跳过格式字符串中的前导零。

1
2
3
4
// max. two decimal places
String.Format("{0:0.##}", 123.4567);      //"123.46"
String.Format("{0:0.##}", 123.4);         //"123.4"
String.Format("{0:0.##}", 123.0);         //"123"