zoukankan      html  css  js  c++  java
  • java存大数和高精度浮点数(BigInteger与BigDecimal)

    BigInteger与BigDecimal

    BigInteger

    背景: Integer 类作为 int 的包装类,能存储的最大的整数值为 2^31 - 1, Long类也是有限的,最大为 2^63 - 1. 如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。

    java.math包的BigInteger 可以表示不可变的任意精度整数BigInteger 提供所有 Java的基本整数操作符的对应物,并提供 java.lang.Math的所有方法相关。另外,BigInteger 还提供一下运算:模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作。

    构造器

    • BigInteger(Sring val): 根据字符串构建BigInteger对象

    测试

    • public class Main {
      
          public static void main(String[] args) {
              BigInteger bigInteger = new BigInteger("214125151526734574578548484845854845");
              System.out.println(bigInteger);
      
          }
      
      }
      
    • 输出

    • 214125151526734574578548484845854845
      

    BigDecimal

    背景: 一般的Float类和Double类可以用来做科学计算或者工程计算,但是在 商业计算中,要求数字精度比较高,故用 *java.math.BigDecimal

    BigDecimal类支持不可变的、任意精度的有符号十进制定点数。

    构造器

    • public BigDecimal(double val);
    • public BigDecimal(String val);

    常用方法

    • public BigDecimal add(BigDecimal augend); 加法
    • public BigDecimal substract(BigDecimal subtrahend); 减法
    • public BigDecimal multiply(BigDecimal multiplicand); 乘法
    • public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode); 除法

    测试

    • import java.math.BigDecimal;
      import java.math.BigInteger;
      import java.util.Arrays;
      import java.util.Scanner;
      
      public class Main {
      
          public static void main(String[] args) {
              BigDecimal bigDecimal = new BigDecimal("15.1231241251512512512521");
              BigDecimal bigDecimal1 = new BigDecimal("11.121");
      
              System.out.println(bigDecimal.add(bigDecimal1));
              System.out.println(bigDecimal.subtract(bigDecimal1));
              System.out.println(bigDecimal.multiply(bigDecimal1));
              // 要求保留15位小数, BigDecimal.ROUND_HALF_DOWN四舍五入
              System.out.println(bigDecimal1.divide(bigDecimal, 15, BigDecimal.ROUND_HALF_DOWN));
      
          }
      
      }
      

    注意: 如果出现java.lang.ArithmeticException则表示除不尽,各可以规定保留小数位数,或者进位模式(四舍五入)

    追求吾之所爱
  • 相关阅读:
    GeoServer 2.2 正式版发布,GIS 服务器
    Spring Shell 1.0.0.RC1 发布
    微软发布支持Windows Desktop和F#的Visual Studio Express版本
    XINS 3.0 正式版发布,远程 API 调用规范
    YUI 3.7.2 补丁版发布
    HTML5 Boilerplate 4:改进了Apache配置和图片替换技术,并采用MIT许可证
    解决Windows Phone平台上不能枚举工程自带资源的问题
    截短 UTF8 字符串
    Spring Data Neo4j 2.1.0 RC4 发布
    GTK+ 3.5.18 发布,GUI 开发工具包
  • 原文地址:https://www.cnblogs.com/rstz/p/14390964.html
Copyright © 2011-2022 走看看