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#计算"太精确"
您可以使用:
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