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 大于
  • 相关阅读:
    代理工具
    python-requests简单使用
    Charles使用 请求转发【map remote】 rewrite-body替换 rewrite-modify query param
    charles监控 移动端HTTPS请求
    unittest执行测试用例过程
    JVM工具命令
    JAVA开发小技巧
    命名神器(妈妈再也不用担心我瞎命名了)
    CookieUtil、EncryptUtil(各种加密算法)、HttpUtil
    常见Maven命令
  • 原文地址:https://www.cnblogs.com/shihaiming/p/8555200.html
Copyright © 2011-2022 走看看