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;
        }






  • 相关阅读:
    mysql只会使用到一个索引的原因
    SQL优化-三
    SQL优化-二
    SQL优化-一
    关于调和级数的证明
    SA 复习笔记
    点分治学习笔记
    FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅰ
    python3+selenium webdriver实战应用篇-打造爱奇艺直播间机器人
    Photoshop如何修改(半)透明像素的RGB值
  • 原文地址:https://www.cnblogs.com/chenglc/p/10007634.html
Copyright © 2011-2022 走看看