如何将两个小数相乘并将结果四舍五入到小数点后两位?
例如,如果公式为41.75 x 0.1,则结果为4.175。如果我在C#中使用小数点进行此操作,它将自动舍入为4.18。我想四舍五入到4.17。
我尝试使用Math.Floor,但将其四舍五入为4.00。这是一个例子:
Math.Floor (41.75 * 0.1);
最佳答案
Math.Round(...)
函数具有一个Enum来告诉它使用哪种舍入策略。不幸的是,这两个定义并不完全适合您的情况。
两种中点舍入模式是:
您要使用的是带有一些乘法的
Floor
。var output = Math.Floor((41.75 * 0.1) * 100) / 100;
output
变量现在应该包含4.17。实际上,您还可以编写一个函数以采用可变长度:
public decimal RoundDown(decimal i, double decimalPlaces)
{
var power = Convert.ToDecimal(Math.Pow(10, decimalPlaces));
return Math.Floor(i * power) / power;
}