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类的基本操作的更多相关文章

  1. 14-02 Java Math类,Random类,System类,BigDecimal类

    Math类 Math的方法 package cn.itcast_01; /* * Math:用于数学运算的类. * 成员变量: * public static final double PI * pu ...

  2. Java—Math类和随机数类

    一.Math类(主要封装算数运算的静态方法) 定义: Math是没有构造方法的. java语言中提供了一个执行数学基本运算的Math类,Math类包括常用的数学运算和一些数学函数.还提供了一些常用的常 ...

  3. Java Math类学习

    1.  java.lang.Math Math类其成员皆为静态成员(static),无需创建对象,直接用类名Math作为前缀使用它们即可. 2.  Math类有两个静态常量:E(自然对数)和PI(圆周 ...

  4. Java基础知识强化79:被遗忘的Java Math类

    1. Math类概述 Math类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 2. 成员变量 和 成员方法(常用的) (1)成员变量 public static final d ...

  5. Java Math类(java.lang包)

    Math类包含用于执行基本数学运算的方法,其所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 运行结果:

  6. Java Math 类中的新功能--浮点数

    Java™语言规范第 5 版向 java.lang.Math和 java.lang.StrictMath添加了 10 种新方法,Java 6 又添加了 10 种.这个共两部分的系列文章的 第 1 部分 ...

  7. JAVA Math类

    public class MathTest{ public static void main(String[] args)  {  /*---------下面是三角运算---------*/  //将 ...

  8. java Math类常用方法

    package com.niuke.test; public class MathDemo { public static void main(String args[]){ /** * abs求绝对 ...

  9. learning java Math类

    output: //取整,返回小于目标数的最大整数System.out.println(Math.floor(-1.2));// 取整,返回在于目标数的最大整数System.out.println(M ...

  10. Java 读书笔记 (十一) Number & Math 类

    所有的包装类(Integer.Long.Byte.Double.Float.Short)都是抽象类Number的子类. 这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译 ...

随机推荐

  1. 使用R语言查询某物种所有通路及通路内的基因

    使用R语言查询某物种所有通路及通路内的基因,这里使用Y书的clusterProfiler包. 这里以人类为例查询所有通路及通路内的基因: library(R.utils) R.utils::setOp ...

  2. Linux环境python3-pip安装指定源地址

    # 新建配置文件 vim ~/.pip/pip.conf # 写入地址 [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [i ...

  3. Swagger UI、RESTful简介

    Swagger UI 简介 Swagger UI允许任何人(无论您是开发团队还是最终用户)都可以可视化API资源并与之交互,而无需任何实现逻辑.它是根据您的OpenAPI(以前称为Swagger)规范 ...

  4. Storm基本概念

    storm简介   场景 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝 ...

  5. 一款基于 .NET8 + Vue 开源、免费、跨平台的企业级在线考试系统

    前言 今天大姚给大家分享一款基于 .NET8 + Vue 开源.免费(AGPL-3.0开源协议).跨平台的企业级在线考试系统:XBLMS. 项目介绍 XBLMS是一款基于 .NET8 + Vue 开源 ...

  6. Superset 下钻与交叉筛选

    以下内容来自外网:https://github.com/apache/superset/issues/6774 具体查看外网,我目前还没有琢磨,如果你有了思路请再下方留言 下面这个网址也有个交叉筛选: ...

  7. 0425-字符输入流FileReader

    package A10_IOStream; import java.awt.datatransfer.StringSelection; import java.io.IOException; impo ...

  8. uni-app在小程序上遇见的坑(a-b页面频繁跳转)

    功能描述 uni-app在小程序中. A页面跳B页面.B页面在调A页面.这样来回跳转. 多调几次,会有问题的. 出现的问题是,调不动了. 因为 这个方法是 uni.navigateTo 保留当前页.( ...

  9. 打造有效安全闭环,天翼云MDR来了!

    随着网络攻-防对抗形势愈演愈烈,传统的安全防护模式已难以应对频率暴增.昼夜不停的网络安全攻-击,提升组织安全防护能力势在必行.事实上,一些单位在网络安全建设工作中经验不足,在安全组件/设备采购方面大量 ...

  10. ChatGPT 背后的英雄——AI芯片

    本文分享自天翼云开发者社区<ChatGPT 背后的英雄--AI芯片>,作者:w****n AI芯片能为人工智能应用提供所需的基础算力:按技术架构主要分为GPU.FPGA和ASIC.Chat ...