Math.Round,保持小数位

时间:2013-10-23 16:23:51

标签: c# rounding

例如。

Math.Round(2.314, 2) //2.31
Math.Round(2.301, 2) //2.3   , but I want this as 2.30

6 个答案:

答案 0 :(得分:9)

数字在小数点后没有任何零概念。

您实际上是在询问如何将数字转换为带有额外零的字符串

(2.301).ToString("0.00") // "2.30"

有关详细信息,请参阅numeric format strings 特别是,0说明符将从零开始。

答案 1 :(得分:4)

您需要数字的字符串格式:

string val = Math.Round(2.301, 2).ToString("F2");

here's a post on formatting numbers in C#

答案 2 :(得分:1)

2.3和2.30是一回事。如果你想要字符串 2.30,那么在Math.Round函数上使用.ToString(“F2”)。

答案 3 :(得分:1)

从代码的角度来看,2.3和2.30是相同的。您可以通过格式化字符串来显示尾随零:

string yourString = Math.Round(2.301, 3).ToString("0.00");

答案 4 :(得分:1)

小数仍然存在,您可能只是没有看到,因为当您查看字符串表示时,默认情况下它会省略尾随零。您可以通过将格式字符串传递给ToString()来覆盖此行为:

Console.WriteLine(Math.Round(2.301, 2).ToString("N2")) // 2.30

但是,当然,如果这仅用于显示目的,您实际上不需要致电Math.Round

Console.WriteLine(2.301.ToString("N2")) // 2.30

进一步阅读

答案 5 :(得分:0)

如果您使用decimal个数字(他们的文字以m结尾,那么" money"),您将获得您之后的行为。 double数字不像decimal那样具有重要零的概念。

Math.Round(2.314m, 2);
Math.Round(2.301m, 2);

或者,如果您想更改数字的显示方式,可以使用string format

Math.Round(2.314, 2).ToString("N2");
Math.Round(2.301, 2).ToString("N2");