Math類中提供了三個與取整有關(guān)的方法:ceil,floor,round,這些方法的作用與它們的英文名稱的含義相對應(yīng),例如:ceil的英文意義是天花板,該方法就表示向上取整,Math.ceil(11.3)的結(jié)果為12,Math.ceil(-11.6)的結(jié)果為-11;floor的英文是地板,該方法就表示向下取整,Math.floor(11.6)的結(jié)果是11,Math.floor(-11.4)的結(jié)果-12;最難掌握的是round方法,他表示“四舍五入”,算法為Math.floor(x+0.5),即將原來的數(shù)字加上0.5后再向下取整,所以,Math.round(11.5)的結(jié)果是12,Math.round(-11.5)的結(jié)果為-11.Math.round( )符合這樣的規(guī)律:小數(shù)點(diǎn)后大于5全部加,等于5正數(shù)加,小于5全不加。
讓我們看看JDK的說明:
(1)public static long round(double a)
returns the closest long to the argument. the result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type long. in other words, the result is equal to the value of the expression:
(long)math.floor(a + 0.5d)
(2)public static double floor(double a)
returns the largest(closest to positive infinity) double value that is not greater than the argument and is equal to a mathematical integer.special cases:
if the argument value is already equal to a mathematical integer, then the result is the same as the argument.
if the argument is nan or an infinity or positive zero or negative zero, then the result is the same as the argument.
parameters:
a - a value.
returns:
the smallest (closest to negative infinity) floating-point value that is not less than the argument and is equal to a mathematical integer.
//import java.math.*;
public class RoundTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Math.round():Java中的四舍五入函數(shù)
System.out.println("Case1:小數(shù)點(diǎn)后第一位 = 5");
System.out.println("正數(shù):Math.round(11.5) = " + Math.round(11.5));
System.out.println("負(fù)數(shù):Math.round(-11.5) = " + Math.round(-11.5));
System.out.println("Case2:小數(shù)點(diǎn)后第一位 < 5");
System.out.println("正數(shù):Math.round(11.49) = " + Math.round(11.49));
System.out.println("負(fù)數(shù):Math.round(-11.49) = " + Math.round(-11.49));
System.out.println("Case3:小數(shù)點(diǎn)后第一位 > 5");
System.out.println("正數(shù):Math.round(11.69) = " + Math.round(11.69));
System.out.println("負(fù)數(shù):Math.round(-11.69) = " + Math.round(-11.69));
System.out.println("結(jié)論:正數(shù)小數(shù)點(diǎn)后大于5則進(jìn)位;負(fù)數(shù)小數(shù)點(diǎn)后小于以及等于5都舍去,大于5的則進(jìn)位");
System.out.println("也就是說:小數(shù)點(diǎn)后大于5全部加,等于5正數(shù)加,小于5全不加");
}
}
作者:Christinewj
鏈接:http://www.itdecent.cn/u/92e23757315f
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。