3

例如。

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

6 回答 6

9

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

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

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

有关详细信息,请参阅数字格式字符串。
特别是,说明0符将从零舍入。

于 2013-10-23T16:25:39.957 回答
4

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

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

这是一篇关于在 C# 中格式化数字的帖子

于 2013-10-23T16:28:04.550 回答
1

2.3 和 2.30 是一回事。如果您想要字符串2.30,请在 Math.Round 函数上使用 .ToString("F2") 。

于 2013-10-23T16:26:18.803 回答
1

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

string yourString = Math.Round(2.301, 3).ToString("0.00");
于 2013-10-23T16:26:56.883 回答
1

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

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

但是当然,如​​果这只是为了显示目的,你真的不需要调用Math.Round

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

延伸阅读

于 2013-10-23T16:27:33.260 回答
0

如果你使用decimal数字(它们的文字以 , 结尾m,表示“钱”),你会得到你所追求的行为。double数字没有与decimals 相同的重要零的概念。

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

或者,如果您想更改查看数字的方式,可以使用字符串格式

Math.Round(2.314, 2).ToString("N2");
Math.Round(2.301, 2).ToString("N2");
于 2013-10-23T16:29:52.183 回答