数字在日常开发中经常遇到,数据场景中会遇到取整,java提供取整函数。看java.lang.在Math类中取整函数的用法。
一、概述java.lang.Math类中有三个与取整相关的函数,即ceil()、floor()、round()方法。所谓取整,就是放弃小数位,保留整数位,但是如何放弃和保留每种方法的处理方法都不一样,看具体用法。
二、ceil()方法详细说明ceil方法的作用是向上取整。以下是方法的定义,
接收double类型的参数,返回double类型。
正数情况以下是参数为正数的情况,ceil是如何取整的,
package com.example.demo.test;public class TestMathCeilPost { public static void main(String[] args) { //定义double类型 double b=12.5; double b2=12.1; ///向上取整 double d=Math.ceil(b); double d2=Math.ceil(b2); ///转化为int类型 int a=Double.valueOf(d).intValue(); int a2=Double.valueOf(d2).intValue(); System.out.println(b+调用Math.ceil方法后的值为:“+a); System.out.println(b2+调用Math.ceil方法后的值为:“+a2); }}
看看执行结果,
从以上结果可以看出,正数情况下是向上取整,即大于原始结果的最小正数,
负数情况看负数的情况,
package com.example.demo.test;public class TestMathCeilNegative { public static void main(String[] args) { //定义double类型 double b=-12.5; double b2=-12.1; ///向上取整 double d=Math.ceil(b); double d2=Math.ceil(b2); ///转化为int类型 int a=Double.valueOf(d).intValue(); int a2=Double.valueOf(d2).intValue(); System.out.println(b+调用Math.ceil方法后的值为:“+a); System.out.println(b2+调用Math.ceil方法后的值为:“+a2); }}
看看执行结果,
可以看出,它也是取大于给定数的最小负整数。
floor()floor方法的作用是向下取整,方法定义如下,
看正数情况,
package com.example.demo.test;public class TestMathFloorPost { public static void main(String[] args) { //定义double类型 double b=12.5; double b2=12.1; ///向下取整 double d=Math.floor(b); double d2=Math.floor(b2); ///转化为int类型 int a=Double.valueOf(d).intValue(); int a2=Double.valueOf(d2).intValue(); System.out.println(b+调用Math.flor方法后的值为:"+a); System.out.println(b2+调用Math.flor方法后的值为:"+a2); }}
看看执行结果,
从以上结果可以看出,floor方法是在正数情况下取小于给定数的最大正数。
负数情况看负数,
package com.example.demo.test;public class TestMathFloorNegative { public static void main(String[] args) { //定义double类型 double b=-12.5; double b2=-12.1; ///向下取整 double d=Math.floor(b); double d2=Math.floor(b2); ///转化为int类型 int a=Double.valueOf(d).intValue(); int a2=Double.valueOf(d2).intValue(); System.out.println(b+调用Math.flor方法后的值为:"+a); System.out.println(b2+调用Math.flor方法后的值为:"+a2); }}
看看执行结果,
从以上结果可以看出,floor方法在负数情况下,是取小于给定数的最大正数。
round()根据方法定义,round方法的作用是“四舍五入”,
floatt参与方法的输入、double,与此int相对应的出参、long。以double为例。
正数情况看正数的情况,
package com.example.demo.test;public class TestMathRoundPost { public static void main(String[] args) { //定义double类型 double b=12.5; double b2=12.1; ///向上取整 double d=Math.round(b); double d2=Math.round(b2); ///转化为int类型 int a=Double.valueOf(d).intValue(); int a2=Double.valueOf(d2).intValue(); System.out.println(b+调用Math.round方法后的值为:"+a); System.out.println(b2+调用Math.round方法后的值为:“+a2); }}
看看执行结果,
看执行结果就是数学上的四舍五入运算,得到结果。
负数情况看负数情况,
package com.example.demo.test;public class TestMathRoundNegative { public static void main(String[] args) { //定义double类型 double b=-12.6; double b2=-12.1; double b3=-12.5; double d=Math.round(b); double d2=Math.round(b2); double d3=Math.round(b3); ///转化为int类型 int a=Double.valueOf(d).intValue(); int a2=Double.valueOf(d2).intValue(); int a3=Double.valueOf(d3).intValue(); System.out.println(b+调用Math.round方法后的值为:"+a); System.out.println(b2+调用Math.round方法后的值为:“+a2); System.out.println(b3+调用Math.round方法后的值为:“+a3); }}
看看执行结果,
从以上结果可以看出,负数情况下不是简单的“四舍五入”,而是XXX.在5的情况下,小数位上的数字小于等于5,放弃小数位,保留整数位数;小数位上的数字大于5,放弃小数位,加-1;
三、总结本文分析了Math类ceil、floor、round函数,
ceil
在正数和负数的情况下,都是向上取整,这里的向上指的是取大于给定数字的最小整数,例如,ceil(12.3)-->13.0 ceil(-12.6)-->-12.0
floor
在正数和负数的情况下,都是向下取整,这里的向下指的是小于给定数字的最大整数,例如,floor(12.3)-->12.0 floor(-12.6)-->-13.0
round
正数是数学上的四舍五入,例如,round(12.3)-->12 round(12.5)-->13
在正数情况下,要注意小数位的数字,小于等于5,然后放弃小数位;大于5,则加-1,例round(-12.3)-->-12 round(-12.5)-->-12 round(-12.6)-->-13
如有不正之处,请指正,谢谢!
本文是转载内容,我们尊重原作者对文章的权利。如有内容错误或侵权行为,请联系我们更正或删除文章。
