java基础之二:取整函数(Math类)
在日常开发中经常会遇到数字的情况,有关数据的场景中会遇到取整的情况,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()
ceil方法的作用是向下取整,看方法定义如下,
正数情况
看正数情况下,
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.floor方法后的值为:"+a);
System.out.println(b2+"调用Math.floor方法后的值为:"+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.floor方法后的值为:"+a);
System.out.println(b2+"调用Math.floor方法后的值为:"+a2);
}
}
看执行结果,
通过上面的结果,可以看到floor方法在负数情况下,是取小于给定数的最大的正数。
round()
round方法的作用是“四舍五入”,看方法定义,
看到方法的入参有float、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
有不正之处,欢迎指正,感谢!
java基础之二:取整函数(Math类)的更多相关文章
- JAVA基础(二)—— 常用的类与方法
JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...
- Java从零开始学二十八(Math类和Random类)
一.Math概述 提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率) 二.常用方法 package com.pb.demo1; public class MathTest { ...
- Java基础知识强化81:Math类random()方法之获取任意范围的随机数案例(面试题)
1. 需求:设计一个方法,可以实现获取任意范围内的随机数 分析:使用方法random()如下: public static double random() 注:Returns a pseudo-ran ...
- Java基础知识强化80:Math类random()方法的小扩展(控制产生目的数字的概率)
1. Math.random()方法: Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9 那么如下 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- java基础(二章)
java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l 必须以字母.下划线 _ .美元符号 $ 开头 l 变量中,可以包括数字 l 变量中,不能出现特 ...
- Java基础十二--多态是成员的特点
Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...
- Java基础-进程与线程之Thread类详解
Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...
随机推荐
- TypeError: react__WEBPACK_IMPORTED_MODULE_2___default.a.createClass is not a function
在看阮一峰的react入门的时候,写到一段代码,但是写完就报错了,经过多方查找,终于解决掉了 错误描述: 解决方法: 将React.createClass换成React.Component, 但是不知 ...
- centos7安装数据库 (系统包含预装环境mariadb)
查看系统是否安装了MySQL,有些没安装但是有路径,那是因为系统安装了mariadb-libs,对应的配置文件目录:/etc/my.cnf(下面就根据mariadb来安装mysql) 查看系统预装ma ...
- maven pom.xml 报错
首先介绍背景,在eclipse中导入一个maven的项目,在我之前的电脑上导入好用,在自己的电脑上导入居然pom报错了Missing artifact junit:junit:jar:4.11,还会有 ...
- 1-06-2 Lambda表达式
last modified:2020/10/31 1-06-3-Lambda表达式 6.3.1 为什么引入lambda表达式 lambda表达式是一个可传递的代码块,可以在以后执行一次或多次. 将一个 ...
- NOIP前一些题目的理解
ZYB和售货机(图论,环) 题目链接 个人感觉这道题与基环树没有任何关系,你会发现,每个点最多只有一个入度和出度,所以只能是链或环. 还有就是本题的突破点就在于正确建图,题目的限制保证每个点的入度不大 ...
- Python_DOM
Dom简介:Js通过标签筛选让html多文件联动 1.找到标签 获取单个元素 docum ent.getElemrntByID('i1') 获取多个元素(列表)document.getElemrnts ...
- H265Nalu头部解析
一 NALU头部解析 F: 必须为0,为1表示语法错误.整包将被丢弃 NalType:nalu包的类型,其中VCL NAL和non-VCL NAL各有32类.0-31是vcl nal单元:32-63, ...
- level2行情是什么意思?
level2行情是由上海证券交易所推出的实时行情信息收费服务产品,主要提供在上海证券交易所上市交易的证券产品的实时交易数据,包括十档行情,买卖队列,逐笔成交,委托总量和加权价格等数据. 投资者根据其功 ...
- CorelDRAW常用工具之渐变工具
我们在进行宣传单页或者LOGO等等各种平面设计时,颜色的使用是极为重要的一方面.有些新手可能还不知道怎么填充多种颜色的渐变,有的背景色不止2个颜色渐变,而是由多种颜色调成的. 我们在画布上画两个图形, ...
- 思维导图软件MindManager新手入门教程
MindManager是一款创造.管理和交流思想的思维导图软件,其直观清晰的可视化界面和强大的功能可以快速捕捉.组织和共享思维.想法.资源和项目进程等等.MindManager新手入门教程专为新手用户 ...