数学四舍五入,保持小数位
本文关键字:小数 四舍五入 | 更新日期: 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");