BigIntager类和BigDecimal类

BigInteger类

BigInteger:可以让超过Integer范围内的数据进行运算

构造方法:
      BigInteger(String val)

代码示例:BigInteger bi = new BigInteger("2147483648");

成员方法:

(1)public BigInteger add(BigInteger val):加
     (2)public BigInteger subtract(BigInteger val):减
     (3)public BigInteger multiply(BigInteger val):乘
     (4)public BigInteger divide(BigInteger val):除
     (5)public BigInteger[] divideAndRemainder(BigInteger val):返回商和余数的数组

代码示例:

BigInteger bi1 = new BigInteger("100");

BigInteger bi2 = new BigInteger("50");

System.out.println("add:" + bi1.add(bi2));

System.out.println("subtract:" + bi1.subtract(bi2));

System.out.println("multiply:" + bi1.multiply(bi2));

System.out.println("divide:" + bi1.divide(bi2));

BigInteger[] bis = bi1.divideAndRemainder(bi2);

BigDecimal类

这么段代码:

System.out.println(0.09 + 0.01);
      System.out.println(1.0 - 0.32);
      System.out.println(1.015 * 100);
      System.out.println(1.301 / 100);

我们能看到,程序结果与预想的结果不同。这是因为float类型和double类型数据的的存储和整数不一样导致。大部分时候,它们都是带有有效数字位。

由于在运算时候,float类型和double类型数据很容易丢失精度,为了能够精确的表示、计算浮点数,Java提供了BigDecimal类。

BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。

注意:BigDecimal类,一般用在金融项目等对数据精度要求严格的场景

构造方法:
      public BigDecimal(String val)

成员方法:
      public BigDecimal add(BigDecimal augend):加
      public BigDecimal subtract(BigDecimal subtrahend):减
      public BigDecimal multiply(BigDecimal multiplicand):乘
      public BigDecimal divide(BigDecimal divisor):除
      public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):除,

三个参数的意义:除数;小数的位数;取舍的标准,一般使BigDecimal.ROUND_HALF_UP

代码示例:

BigDecimal bd1 = new BigDecimal("0.09");
            BigDecimal bd2 = new BigDecimal("0.01");
            System.out.println("add:" + bd1.add(bd2));
            System.out.println("------------------------");

BigDecimal bd3 = new BigDecimal("1.0");
            BigDecimalbd4 = new BigDecimal("0.32");
            System.out.println("subtract:" + bd3.subtract(bd4));
            System.out.println("------------------------");

BigDecimal bd5 = new BigDecimal("1.015");
            BigDecimal bd6 = new BigDecimal("100");
            System.out.println("multiply:" + bd5.multiply(bd6));
            System.out.println("-----------------------");

BigDecimal bd7 = new BigDecimal("1.301");
            BigDecimal bd8 = new BigDecimal("100");
            System.out.println("divide:" + bd7.divide(bd8));
            System.out.println("divide:"+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));

时间: 2024-11-28 23:09:24

BigIntager类和BigDecimal类的相关文章

Java大数处理类:BigInteger类和BigDecimal类

当我们要处理非常大的数据时,平常用的数据类型已不足以表示,在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,这两个类在理论上只要计算机内存足够大就能够表示无线大的数.它们都在java.math.*包中,我们可以在API文档中进行查看: Java API 1.6 中文在线帮助文档 http://www.yq1012.com/api/ 实例: 1 import java.math.BigDecimal; 2 import java.math.BigInteg

Java基础系列9:BigInteger类和BigDecimal类

一 BigInteger类 当我们碰到需要处理一个很大的数字时,这时候肯定没法使用int和long.当然我们可以使用String来接收大数字,然后再采用拆分的方式来计算,不过这种方式很麻烦.因此在Java中为了解决这种问题,提供了BigInteger类.BigInteger类表示是大整数类,定义在java.math.*这个包中,如果操作的整数已经超过了整数的最大类型长度long,这时可以考虑使用BigInteger类来进行操作 常用方法的示例: package javase.base; impo

Java基础知识强化89:BigDecimal类之BigDecimal类引入和概述 以及 BigDecimal的使用(加减乘除)

1. BigDecimal类概述: 由于在运算的时候,float类型和double很容易丢失精度.所以为了能够精确的表达.计算浮点数,Java提供了BigDecimal. BigDecimal:不可变.任意精度的有符号十进制数. 2. BigDecimal构造方法 1 public BigDecimal(String val) 3. BigDecimal的使用(加减乘除) 1 public BigDecimal add(BigDecimal augend):加 2 public BigDecim

用BigDecimal类实现Fibonacci算法

Fibonacci(N)=Fibonacii(N-1)+Fibonacci(N-2) 其中 Fibonacci(0)=0;Fibonacci(1)=1 用循环或则递归实现Fibonacci算法很简单,这里就不说了,如果要用公式实现的话,需要进行开根号和幂运算,普通的long型号只能精确到小数点之后的16位,这就意味着当N很大的时候由于小数位overflow无法进行精确运算,本人测试当N大于92时候因为数据溢出的原因就与实际结果不一样了,如果小数点后面不是精确16位,而是自己设定的话,那么运算结果

Java中的BigDecimal类用法介绍

Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类. BigDecimal 类的实现用到了 BigInteger类,不同的是 BigDecimal 加入了小数的概念. float和Double只能用来做科学计算或者是工程计算;在商业计算中,对数字精度要求较高,必须使用 BigIn

Java BigDecimal类

1 package demo04; 2 3 import java.math.BigDecimal; 4 5 //double和float类型在运算中很容易丢失精度,造成数据的不准确性,BigDecimal类可以实现浮点数据的高精度运算 6 public class BigDecimalDemo { 7 public static void main(String[] args) { 8 BigDecimal b1 = new BigDecimal("0.09"); 9 BigDeci

java之BigDecimal类

1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类 BigDecimal类是不可变得.任意精度的有符号是进制数 2.构造方法及成员方法 package com; import java.math.BigDecimal; /**  * BigDecimal类  * 由于在运算的时候,float类型和double类型很容易丢失精度.所以,为了能精确的表示.计算浮点数.

BigDecimal类

为了能精确表示,计算浮点数,java提供了BigDecimal类,该类提供了大量的构造器用于创建BigDecimal对象,包括 把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串,数字字符数组来创建BigDecimal对象 BigDecimal类提供了add()方法,subtract(),multiply(),divide(),pow()方法对精确浮点数进行常规算术运算 public class BigDecimalTest{ public static void m

Java复习-Bigdecimal类

因为直接引用float和double类型的数据进行算数运算的时候总是会进行精度的丢失,因此Java采用了bigdecimal类进行精度方面的运算,但是采用精度进行运算的时候,一般传入的是字符串,如果硬要传入double类型的数据的话,采用bigdecimal类提供的方法 产生了精度的丢失, 如果使用了bigdecimal之后,采用的是新建对象,不是以字符串的方式传入的话就会出现误差,所以一定要以字符串的方式传入进去 采用了最后一种方式以后就不会出现进度的消失了