如何将两位小数相乘并将结果四舍五入到小数点后两位?
例如,如果方程为 41.75 x 0.1,则结果将为 4.175。如果我在 C# 中使用小数执行此操作,它将自动四舍五入到 4.18。我想四舍五入到 4.17。
我尝试使用 Math.Floor,但它只是向下舍入到 4.00。这是一个例子:
Math.Floor (41.75 * 0.1);
The Math.Round(...)
函数有一个枚举来告诉它使用什么舍入策略。不幸的是,这两个定义并不完全适合您的情况。
两种中点舍入模式是:
-
远离零- 当一个数字介于另外两个数字之间时,它会向远离零的最接近的数字舍入。 (又名,四舍五入)
-
ToEven- 当一个数字介于另外两个数字之间时,它会向最接近的偶数舍入。 (相对于 0.17 更倾向于 0.16,相对于 0.17 更倾向于 0.18)
你想用的是Floor
与一些乘法。
var output = Math.Floor((41.75 * 0.1) * 100) / 100;
The output
变量现在应该有 4.17。
事实上,您也可以编写一个函数来获取可变长度:
public decimal RoundDown(decimal i, double decimalPlaces)
{
var power = Convert.ToDecimal(Math.Pow(10, decimalPlaces));
return Math.Floor(i * power) / power;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)