zoukankan      html  css  js  c++  java
  • BigDecimal快速使用

    double类型最多支持16位有效数字,且最大值只支持10^308次方,大一点的数字会变为科学计数法,小数精度不够等有一系列不方便的问题;

    引进BigDecimal解决此类麻烦,弊端,BigDecimal没有double使用方便;具体如下;

    警告警告!!!--> BigDecimal保留小数精度时,比较靠谱,但是当值小于1大于0的时候,保留位数大于6位就会变成科学计数法,解决办法-toPlainString()代替toString()

    创建对象,推荐

    public BigDecimal(String val)

    而不推荐

    public BigDecimal(double val),会出现0.00=0


    基本操作:

         加:add(BigDecima)

    
    

         减:subtract(BigDecimal)

    
    

         乘:multiply(BigDecimal)

    
    

         除:divide(BigDecimal)

    
    

         乘方:pow(int)

    
    

         取绝对值:abs()

    
    

         取反:negate()

    
    

         对比:compareTo(BigDecimal)

    
    

         设置小数点精确度:setScale(int)

         不使用科学计数法:toPlainString()

    
    

         设置保留小数点精确度并添加保留方式(直接加1或者四舍五入):setScale(int, int)

        /**
         * 转小数,保留2位
         * @param num
         * @return
         */
        public static BigDecimal StrTo2Double(String num) {
            return new BigDecimal(num).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
        }
        /**
         * 格式化8位小数
         
         * @param num
         * @return
         */
        public static String format8(BigDecimal num) {
            if (num == null)
                return "0.00000000";
            return num.setScale(8, java.math.BigDecimal.ROUND_HALF_UP).toPlainString();
        }
        /**
         * 是否比0大
         * num > 0
         * @return
         */
        public static boolean biggerThan0(BigDecimal num) {
            if (0 < num.compareTo(new BigDecimal(0)))
                return true;
            return false;
        }






  • 相关阅读:
    KVM克隆CentOS6虚拟机后无法启动
    Python socket网络模块
    LNMP的安装--详细版
    CentOS7 二进制安装MySQL5.6.42
    超越线程池:Java并发并没有你想的那么糟糕
    有哪些实用的计算机相关技能,可以在一天内学会?
    如何写出让hr一看就约你面试的简历
    五个最佳编程字体
    Eclipse 的 Debug 介绍与技巧
    Redis时延问题分析及应对
  • 原文地址:https://www.cnblogs.com/chenglc/p/10007634.html
Copyright © 2011-2022 走看看