c#四舍五入到小数点后2位

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

我感兴趣的是如何以某种特定的方式将双变量四舍五入到小数点后2位。我到底是什么意思?数学。整数(数字,2)可以,但是……例如,我的数字是17.0449999…

Math.Round(17.044999, 2) // 17.04

如果是这样的话,我想要17.05。我找到了一种方法,例如:

Math.Round(17.044999, 3) // returns 17.045
Math.Round(17.045, 2) // returns 17.05

我想问的是有没有其他/更好/更简单的方法来做这件事?

[编辑]:

我想我发现了一个奇怪的问题。从头开始:

我们谈论具体的数字。我要从奖金中扣除5%在这种情况下,奖金是340,9。当我在windows计算器340,9 * 0.05中进行计算时,结果是17,045。当我在Excel中进行计算时,我得到同样的结果。但是当我在c#中做同样的计算时,我得到类似17,04499999998的东西。很明显,它非常接近17.045,我们可以很容易地把它四舍五入。但关键是我不能把每个结果四舍五入到小数点后3位,因为这可能会改变其他结果。

似乎是特殊情况或c#计算"太精确"

c#四舍五入到小数点后2位

您可以使用:

System.Math.Ceiling (n * 100) / 100;

如下所示:

Math.Floor()与Math.Truncate()的区别

的例子:

System.Math.Ceiling (17.044999 * 100) / 100; // Returns 17.05

public decimal RoundDown(decimal i, double decimalPlaces)
{
   var power = Math.Pow(10, decimalPlaces);
   return Math.Floor(i * power) / power;
}
public decimal RoundUp(decimal i, double decimalPlaces)
{
   var power = Math.Pow(10, decimalPlaces);
   return Math.Ceiling(i * power) / power;
}
RoundDown(17.045, 2);  // 17.04
RoundUp(17.045, 2);    // 17.05