正如标题所示,我需要一个C#equivelant of ROUNDDOWN。
例如,如果您使用图13.608000,我要找的输出是13.60。
我似乎无法找到任何能够完全覆盖我所追求的东西。
答案 0 :(得分:8)
这是Excel函数的直接端口,用于可变小数位数
public double RoundDown(double number, int decimalPlaces)
{
return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces);
}
e.g。 RoundDown(13.608000,2)= 13.60,RoundDown(12345,-3)= 12000,
答案 1 :(得分:7)
您可以执行以下操作:
var rounded = Math.Floor(13.608000 * 100) / 100;
请注意,Math.Floor()向下舍入到最接近的整数,因此需要乘以,向下舍入,然后除以。
答案 2 :(得分:2)
这是正确的解决方案:
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的答案几乎是正确的,他只是没有说明负值的四舍五入。
答案 3 :(得分:0)
要进行四舍五入,请使用Math.Floor。要舍入到1.0以外的其他因子,请在调用Floor之前相乘并在之后进行除法。
double x = 0.01 * Math.Floor(100 * y);
答案 4 :(得分:-1)
Math.Round函数应该这样做,http://msdn.microsoft.com/en-us/library/zy06z30k.aspx
答案 5 :(得分:-1)
解决方法:
decimal x = 13.6080001;
int places = 2;
int result = (int)(Math.Round(x - (0.5 * Math.Pow(10, 0 - places), places)));