Excel函数舍入(数字,num_位)在C#中的等效值是什么?
正如标题所示,我需要一个C#等价的舍入 例如,如果以图13.608000为例,我要查找的输出是13.60Excel函数舍入(数字,num_位)在C#中的等效值是什么?,c#,.net,rounding,C#,.net,Rounding,正如标题所示,我需要一个C#等价的舍入 例如,如果以图13.608000为例,我要查找的输出是13.60 我似乎找不到任何能完全涵盖我所追求的内容的内容。Math.Round函数应该可以做到这一点,您可以执行以下操作: var rounded = Math.Floor(13.608000 * 100) / 100; 请注意,Math.Floor()向下舍入到最接近的整数,因此需要乘法、向下舍入,然后除以。要向下舍入,请使用Math.Floor。若要四舍五入到不同于1.0的因子,请在调用楼层之前
我似乎找不到任何能完全涵盖我所追求的内容的内容。Math.Round函数应该可以做到这一点,您可以执行以下操作:
var rounded = Math.Floor(13.608000 * 100) / 100;
请注意,Math.Floor()向下舍入到最接近的整数,因此需要乘法、向下舍入,然后除以。要向下舍入,请使用Math.Floor。若要四舍五入到不同于1.0的因子,请在调用楼层之前乘以,然后除以
double x = 0.01 * Math.Floor(100 * y);
解决方法:
decimal x = 13.6080001;
int places = 2;
int result = (int)(Math.Round(x - (0.5 * Math.Pow(10, 0 - places), places)));
下面是Excel函数的一个直接端口,用于可变的小数位数
public double RoundDown(double number, int decimalPlaces)
{
return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces);
}
e、 g.四舍五入(13.608000,2)=13.60,四舍五入(12345,-3)=12000,以下是正确的解决方案:
double RoundDown(double value, int digits)
{
if (value >= 0)
return Math.Floor(value * Math.Pow(10, digits)) / Math.Pow(10, digits);
return Math.Ceiling(value * Math.Pow(10, digits)) / Math.Pow(10, digits);
}
RichardW1001的答案几乎是正确的,他只是没有考虑负值的舍入。此方法的行为遵循IEEE标准754第4节。这种舍入有时被称为舍入到关于舍入的最近问题。不完全是这样,因为它并不总是舍入。这与Excel中的舍入不同,Excel中的舍入似乎将-ve值向上舍入到零,例如-2.55变为-2,此函数将从-2.55舍入到-3。如果您使用的是角度分母管,这就是后端等效计算所需的。