【Java】Math类的基本操作
Math类
Math 类是数学操作类,提供了一系列的数学操作方法,包括求绝对值、三角函数等,在 Math 类中提供的一切方法都是静态方法(类方法),所以直接由类名称调用即可。
Math类的基本操作:
| 方法 | 返回类型 | 描述 | 备注 |
|---|---|---|---|
| abs(int a) | int | 取绝对值 | ABSolute |
| sqrt(double a) | double | 平方根 | SQuare RooT |
| max(int a, int b) | int | 取两数的最大值 | |
| min(int a, int b) | int | 取两数的最小值 | |
| pow(double base, double exponent) | double | 第一个参数的第二个参数次方 | power:次方 base:底数 exponent:指数 |
| round(float a) | int | 四舍五入 | round off Math.floor(x+0.5) |
| random() | double | 随机数 | 0.0~1.0之间的小数(包括0.0不包括1.0) |
| ceil(double a) | double | 向上取整 | 天花板 |
| floor(double a) | double | 向下取整 | 地板 |
例子
System.out.println("求平方根:" + Math.sqrt(9.0));
System.out.println("求两数的最大值:" + Math.max(10, 30));
System.out.println("求两数的最小值:" + Math.min(10, 30));
System.out.println("2的3次方:" + Math.pow(2, 3));
System.out.println("四舍五入:" + Math.round(33.6));
System.out.println("取1~100之间的随机数:" + ((int)(Math.random()*100)+1));
程序运行结果:
求平方根:3.0
求两数的最大值:30
求两数的最小值:10
2的3次方:8.0
四舍五入:34
取1~100之间的随机数:1
注意:Math类中的 round() 方法的主要作用是进行四舍五入操作,但是此方法在操作时将小数点后面的全部数字都忽略掉,如果想精确到小数点后的精确位数,则必须使用 BigDecimal 类完成。
BigDecimal
由于这个不是基本数据类型,所以如果想要进行运算(如 加减乘除),得使用它的方法,不能直接用符号运算(如 +、-)。
八种舍入模式解释如下:
- ROUND_UP
舍入远离零的舍入模式。
在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加 1)。
注意:此舍入模式始终不会减少计算值的大小。
```
BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);
System.out.println(c);//2.23 跟上面相反,进位处理
```
- ROUND_DOWN
接近零的舍入模式。
在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加 1,即 截短)。
注意:此舍入模式始终不会增加计算值的大小。
```
BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(b);//2.22 直接去掉多余的位数
```
- ROUND_CEILING
接近正无穷大的舍入模式。
如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;
如果为负,则舍入行为与 ROUND_DOWN 相同。
注意:此舍入模式始终不会减少计算值。
```
BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(f);//2.23 如果是正数,相当于BigDecimal.ROUND_UP
BigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(g);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN
```
- ROUND_FLOOR
接近负无穷大的舍入模式。
如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;
如果为负,则舍入行为与 ROUND_UP 相同。
注意:此舍入模式始终不会增加计算值。
```
BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(h);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN
BigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(i);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP
```
- ROUND_HALF_UP
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。
注意:这是我们大多数人在小学时就学过的舍入模式(四舍五入)。
```
BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("ROUND_HALF_UP"+d); //2.23 四舍五入(若舍弃部分>=.5,就进位)
```
ROUND_HALF_DOWN
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println("ROUND_HALF_DOWN"+e);//2.22 四舍五入(若舍弃部分>.5,就进位)
ROUND_HALF_EVEN
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;
如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。
注意:在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。
此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。
如果前一位为奇数,则入位,否则舍去。
以下例子为保留小数点1位,那么这种舍入方式下的结果。
1.15>1.2 1.25>1.2
```
BigDecimal j = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(j);//2.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN
BigDecimal k = new BigDecimal("2.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(k);//2.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP
```
ROUND_UNNECESSARY
断言请求的操作具有精确的结果,因此不需要舍入。
如果对获得精确结果的操作指定此舍入模式,则抛出 ArithmeticException。BigDecimal l = new BigDecimal("2.215").setScale(3, BigDecimal.ROUND_UNNECESSARY);
System.out.println(l);
//断言请求的操作具有精确的结果,因此不需要舍入。
//如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。
【Java】Math类的基本操作的更多相关文章
- 14-02 Java Math类,Random类,System类,BigDecimal类
Math类 Math的方法 package cn.itcast_01; /* * Math:用于数学运算的类. * 成员变量: * public static final double PI * pu ...
- Java—Math类和随机数类
一.Math类(主要封装算数运算的静态方法) 定义: Math是没有构造方法的. java语言中提供了一个执行数学基本运算的Math类,Math类包括常用的数学运算和一些数学函数.还提供了一些常用的常 ...
- Java Math类学习
1. java.lang.Math Math类其成员皆为静态成员(static),无需创建对象,直接用类名Math作为前缀使用它们即可. 2. Math类有两个静态常量:E(自然对数)和PI(圆周 ...
- Java基础知识强化79:被遗忘的Java Math类
1. Math类概述 Math类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 2. 成员变量 和 成员方法(常用的) (1)成员变量 public static final d ...
- Java Math类(java.lang包)
Math类包含用于执行基本数学运算的方法,其所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 运行结果:
- Java Math 类中的新功能--浮点数
Java™语言规范第 5 版向 java.lang.Math和 java.lang.StrictMath添加了 10 种新方法,Java 6 又添加了 10 种.这个共两部分的系列文章的 第 1 部分 ...
- JAVA Math类
public class MathTest{ public static void main(String[] args) { /*---------下面是三角运算---------*/ //将 ...
- java Math类常用方法
package com.niuke.test; public class MathDemo { public static void main(String args[]){ /** * abs求绝对 ...
- learning java Math类
output: //取整,返回小于目标数的最大整数System.out.println(Math.floor(-1.2));// 取整,返回在于目标数的最大整数System.out.println(M ...
- Java 读书笔记 (十一) Number & Math 类
所有的包装类(Integer.Long.Byte.Double.Float.Short)都是抽象类Number的子类. 这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译 ...
随机推荐
- 【问题解决记录】vue解决低版本安卓与ios10以下系统兼容性问题
问题描述: 项目中的企业微信内部应用,使用Vue-cli搭建的H5页面web,在低版本的安卓手机或ios8.0.9.0中出现接口数据访问失败,HTTP状态码返回0的问题,无法正常使用系统.安卓手机主要 ...
- 零基础学习Modbus通信协议
大家好!我是付工. 2012年开始接触Modbus协议,至今已经有10多年了,从开始的懵懂,到后来的顿悟,再到现在的开悟,它始终岿然不动,变化的是我对它的认知和理解. 今天跟大家聊聊关于Modbus协 ...
- ids4-startup
https://stackoverflow.com/questions/28418360/jwt-json-web-token-audience-aud-versus-client-id-whats- ...
- biancheng-linux-shell
参考http://c.biancheng.net/view/706.html Shell变量:Shell变量的定义.赋值和删除 Shell 支持以下三种定义变量的方式: variable=valuev ...
- Peewee:Python 简洁强大的 ORM 框架
在 Python 的开发世界中,数据库操作是至关重要的一环. 今天介绍的 Peewee 作为一款简洁且功能强大的 ORM(对象关系映射)框架,为开发者提供了高效便捷的数据库交互方式. 1. Peewe ...
- linux:网络
网络概念 网络发展 1.1969年互联网元年 2.局域网(LAN,Local Area Network).城域网(MAN).广域网(WAN,Wide Area Network) ip地址 网络基础命令 ...
- java中的HashSet
什么是HashSet 在 Java 中,HashSet 是一个基于哈希表实现的集合类,它实现了 Set 接口 HashSet 的主要特点是:1,2 HashSet 的主要特点是 1,集合中的数据不能够 ...
- 第10章 LINQ to XML
第10章 LINQ to XML 10.1 架构概述--DOM 和 LINQ to XML 的 DOM XML 文档可以用一棵对象树完整的表示,这称为"文档对象模型(document obj ...
- IDEA测试Flink程序
一.导入项目,添加jar包 右键项目=>open module setting 选择Flink1.9的lib目录下flink-dist_2.11-1.9.2.jar包(对应运行版本) 保存即可. ...
- C#进行word模板占位符替换的几种工具
word模板中,包含一些需要替换的项,比如{{姓名}} {{年龄}}或者$姓名$ $年龄$,从数据库获取信息后,对模板进行替换操作生成新的word文档. 简单对以下四种工具做了一下测试: 1.NPOI ...