【LSP】Java工具类——数学相关的类

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-10-10

Java工具类——数学相关的类
在上一篇文章中,我们系统学习了 Java 里面的包装类,那么这篇文章,我们就来学习一下Java提供好的类——数学相关的类。

一、数学类介绍
在最早期学习 Java 基础语法结构的时候,其实我们学习并了解了加减乘除这些算数运算符,有了这些运算符,我们就可以做一些简单的运算了,但是当我们需要做一些比较复杂的运算的时候,其实用这些运算符是很难去处理的(比如获取随机数等等)。其实数学类对于我们并不陌生,在学习 Java 基础的时候,你一定用过 Math 类的,这个其实就是我们最早期接触的一个数学类了,其实与数学相关的类还有 BigInteger 类、BigDecimal 类等等,下面这个表格将这三个类做了一个小的梳理总结:

下面我们就对这三种类做一个详细的学习。

二、Math类
其实看源码我们看到,Math 这个类是 final 修饰的,意思就是不能让子类去继承的,只能使用这个类。

public final class Math {}
下面,我们来详细了解一下Math类

2、类中常用的方法
当我们想用这个类做四则运算的时候,是不是也可以直接加减乘除呢,比如下面这张图:


通过上面这张图,BigInteger类直接做四则运算显然是不可以的,因为上面两个数是引用类型,而运算符只能对基本数据类型做运算。那么我们怎么做相应的四则运算呢?其实BigInteger类里面其实已经帮我们实现对应的方法,我们直接用实例化的的对象调用它就行了。比如下方的代码进行加减乘除:

四、BigDecimal类
与 BigInteger 类对应的是 BigDecimal 类,BigInteger 是处理整数的,而 BigDecimal 是处理小数的,Decimal 英文单词就是小数的意思,所以 BigDecimal 顾名思义就是大小数,处理大的小数的。如果一个小数超过了 double类型的取值范围,就需要用到 BigDecimal。

下面我们就来对这其中4种模式的用法做一个详细的分析

ROUND_UP 模式
UP的意思就是向上的意思,可以理解为加的意思。比如我保留了三位小数,那么我不管你后面的小数值如何(除了0),我都给你加一,就相当于四舍五入的五入。比如下面这个代码,我保留3为小数,模式设置为ROUND_UP模式,那么如果最后一位是0,那么结果就是9.461,否则就是9.462

BigDecimal bigDecimal = new BigDecimal("9.4610");
BigDecimal result = bigDecimal.setScale(3, BigDecimal.ROUND_UP);
ROUND_DOWN 模式
是一个舍位取值的概念,比如我保留了三位小数,那么我不管你后面的小数值如何,也不会四舍五入,就硬生生的的截断,相当于什么呢,就是我从小数点后面开始取三位,三位后面的都不要了。比如下面这个代码,我保留3为小数,模式设置为ROUND_DOWN模式,那么最后一位不管是什么(从0到9),最后的结果都是9.461

BigDecimal bigDecimal = new BigDecimal("9.4611");
BigDecimal result = bigDecimal.setScale(3, BigDecimal.ROUND_DOWN);
ROUND_CEILING 模式
这个模式就是给定的数如果为正数,行为和ROUND_UP一样,如果为负数,行为和ROUND_DOWN一样 。

ROUND_FLOOR 模式
这个模式就是给定的数如果为正数,行为和ROUND_DOWN一样,如果为负数,行为和ROUND_UP一样

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    124

  • 帖子

    0

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.8216s Mem:2055Kb