数学四舍五入,保持小数位

本文关键字:小数 四舍五入 | 更新日期: 2023-09-27 18:36:39

例如。

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

数学四舍五入,保持小数位

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

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

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

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

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

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

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

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

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

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

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

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

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

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

延伸阅读

  • 标准数字格式字符串
  • 自定义数字格式字符串

如果你使用decimal数字(它们的文字以m结尾,表示"钱"),你会得到你所追求的行为。 double数字没有像decimal那样具有有效零的概念。

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

或者,如果要更改数字的显示方式,可以使用字符串格式:

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