皮皮网
皮皮网

【43源码】【9转选股 源码】【金钻买点公式源码】biginteger除法源码_biginteger除法源码详解

来源:rongqiapp源码 发表时间:2024-11-27 22:23:28

1.Java大数字运算—BigDecimal 类详解!除法除法
2.BigInteger与BigDecimal

biginteger除法源码_biginteger除法源码详解

Java大数字运算—BigDecimal 类详解!源码源码

       Java数学运算中,详解BigInteger和BigDecimal两类类用于处理大数字。除法除法其中,源码源码43源码BigInteger专为整型大数设计,详解9转选股 源码而BigDecimal则加入小数概念,除法除法适用于高精度计算,源码源码特别在商业计算中精准处理货币值。详解

       BigDecimal构造方法多样,除法除法支持基本运算。源码源码

       加法:BigDecimal add(BigDecimal augend)

       减法:BigDecimal subtract(BigDecimal subtrahend)

       乘法:BigDecimal multiply(BigDecimal multiplieand)

       除法:BigDecimal divide(BigDecimal divisor,详解int scale,int roundingMode)

       divide()方法包含三个参数:除数、结果的除法除法金钻买点公式源码小数位数和舍入模式。

       舍入模式列表包括:UP、源码源码DOWN、详解CEILING、FLOOR、图标提取易语言源码ROUND_HALF_UP、ROUND_HALF_DOWN、ROUND_HALF_EVEN、ROUND_UNNECESSARY。kvm源码分析 pdf下载

       示例代码展示如何使用BigDecimal进行运算并输出结果。

       通过将用户输入的数字转换为BigDecimal对象,调用BigDecimal提供的运算方法执行加、减、乘、除操作。运行结果展示运算结果。

       推荐学习课程:Java基础,包括Java集,涵盖优质视频,以图解形式深入学习Java。

       项目实践:Java游戏项目,1小时教你用Java制作经典扫雷游戏,亲手开发游戏。

       Java毕业设计项目:OA办公系统,实战开发员工管理系统,深入Java开发。

BigInteger与BigDecimal

       BigInteger - 廖雪峰的网站

        在Java中,由CPU原生提供的整型最大范围是位 long 型整数。使用 long 型整数可以直接通过CPU指令进行计算,速度非常快。

        如果我们使用的整数范围超过了 long 型怎么办?这个时候,就只能用软件来模拟一个大整数。 java.math.BigInteger 就是用来表示任意大小的整数。 BigInteger 内部用一个 int[] 数组来模拟一个非常大的整数:

        对 BigInteger 做运算的时候,只能使用实例方法,例如,加法运算:

        和 long 型整数运算比, BigInteger 不会有范围限制,但缺点是速度比较慢。

        也可以把 BigInteger 转换成 long 型:

        使用 longValueExact() 方法时,如果超出了 long 型的范围,会抛出 ArithmeticException 。

        BigInteger 和 Integer 、 Long 一样,也是不可变类,并且也继承自 Number 类。因为 Number 定义了转换为基本类型的几个方法:

        因此,通过上述方法,可以把 BigInteger 转换成基本类型。如果 BigInteger 表示的范围超过了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。如果需要准确地转换成基本类型,可以使用 intValueExact() 、 longValueExact() 等方法,在转换时如果超出范围,将直接抛出 ArithmeticException 异常。

        如果 BigInteger 的值甚至超过了 float 的最大范围,那么返回的 float 是什么呢?

        和 BigInteger 类似, BigDecimal 可以表示一个任意大小且精度完全准确的浮点数。

        通过 BigDecimal 的 stripTrailingZeros() 方法,可以将一个 BigDecimal 格式化为一个相等的,但去掉了末尾0的 BigDecimal :

        如果一个 BigDecimal 的 scale() 返回负数,例如, -2 ,表示这个数是个整数,并且末尾有2个0。

        可以对一个 BigDecimal 设置它的 scale ,如果精度比原始值低,那么按照指定的方法进行四舍五入或者直接截断:

        对 BigDecimal 做加、减、乘时,精度不会丢失,但是做除法时,存在无法除尽的情况,这时,就必须指定精度以及如何进行截断:

        还可以对 BigDecimal 做除法的同时求余数:

        调用 divideAndRemainder() 方法时,返回的数组包含两个 BigDecimal ,分别是商和余数,其中商总是整数,余数不会大于除数。我们可以利用这个方法判断两个 BigDecimal 是否是整数倍数:

        在比较两个 BigDecimal 的值是否相等时,要特别注意,使用 equals() 方法不但要求两个 BigDecimal 的值相等,还要求它们的 scale() 相等:

        必须使用 compareTo() 方法来比较,它根据两个值的大小分别返回负数、正数和0,分别表示小于、大于和等于。

        总是使用 compareTo() 比较两个 BigDecimal 的值,不要使用 equals() !

        如果查看 BigDecimal 的源码,可以发现,实际上一个 BigDecimal 是通过一个 BigInteger 和一个 scale 来表示的,即 BigInteger 表示一个完整的整数,而 scale 表示小数位数:

        BigDecimal 也是从 Number 继承的,也是不可变对象。

相关栏目:知识