zoukankan      html  css  js  c++  java
  • Java 的BigDecimal

    原文:http://blog.csdn.net/diyu122222/article/details/76887382

    • decimal

    decimal(18,0) 18是定点精度,0是小数位数。

    decimal(a,b) a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。

    b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

    • BigDecimal

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

    • BigDecimal的四则运算
    BigDecimal a = new BigDecimal("123");
    BigDecimal b = new BigDecimal("456");
    BigDecimal c = a.add(b);// 加
    BigDecimal d = a.subtract(b);// 减
    BigDecimal e = a.multiply(b);// 乘
    // 除,需指定精度, 保留6位小数,四舍五入,银行项目需注意,向上还是向下取整,不然钱会越算亏得越多
    BigDecimal f = a.divide(b, 6, BigDecimal.ROUND_HALF_UP));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注: BigDecimal的除法,需要指定计算答案的精度, 不然计算机不知道你的精度为多少,会抛异常的。 
    Exception in thread “main” java.lang.ArithmeticException

    eg1 :

    MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);
    //精度为2,舍入模式为大于0.5进1,否则舍弃。 
    BigDecimal a = new BigDecimal(0.5);
    BigDecimal b = new BigDecimal(0.2);
    System.out.println(a.divide(b,mc));
    • 1
    • 2
    • 3
    • 4
    • 5
    • BigDecimal.signum() 返回此BigDecimal的正负号函数。

    此方法返回-1,0,或1,对应BigDecimal的值分类为负,零或正值。

    • BigDecimal 比较大小
    BigDecimal a = new BigDecimal(0.5);
    BigDecimal b = new BigDecimal(0.2);
    int c = a.compareTo(b);//结果C 是:-1 小于,0 等于,1 大于
  • 相关阅读:
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
  • 原文地址:https://www.cnblogs.com/shihaiming/p/8555200.html
Copyright © 2011-2022 走看看