.NET中Math.Floor()和Math.Truncate()的区别是什么?


当前回答

Math.floor()将始终向下舍入。,返回LESSER整数。While round()将返回NEAREST整数

math.floor ()

返回小于或等于指定数字的最大整数。

math.truncate ()

计算一个数的积分部分。

其他回答

Math.floor()将始终向下舍入。,返回LESSER整数。While round()将返回NEAREST整数

math.floor ()

返回小于或等于指定数字的最大整数。

math.truncate ()

计算一个数的积分部分。

Math.Floor ():

它给出小于或等于给定数的最大整数。

    Math.Floor(3.45) =3
    Math.Floor(-3.45) =-4

Math.Truncate ():

它删除数字的小数点后几位并替换为零

Math.Truncate(3.45)=3
 Math.Truncate(-3.45)=-3

从上面的例子中我们还可以看到,对于正数,下限和截断是相同的。

Math.Floor()舍入到负无穷

数学。向上或向下截断舍入到零。

例如:

Math.Floor(-3.4)     = -4
Math.Truncate(-3.4)  = -3

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3

Truncate去掉小数点。

它们在功能上与正数相等。区别在于他们处理负数的方式。

例如:

Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2

Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2

MSDN链接: ——数学。楼的方法 ——数学。截断方法

附注:小心数学。周围可能不是你期望的那样。

要获得“标准”舍入结果,请使用:

float myFloat = 4.5;
Console.WriteLine( Math.Round(myFloat) ); // writes 4
Console.WriteLine( Math.Round(myFloat, 0, MidpointRounding.AwayFromZero) ) //writes 5
Console.WriteLine( myFloat.ToString("F0") ); // writes 5