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






  • 相关阅读:
    03Qt信号与槽(2)
    01Qt中的隐式共享
    10GNU C语言函数调用
    09GNU C语言程序编译
    第一本C语言笔记(下)
    07控制器和控制卡(3)
    06控制器和控制卡(2)
    集合
    linux指令(目录类操作指令)
    面向对象三大特征
  • 原文地址:https://www.cnblogs.com/chenglc/p/10007634.html
Copyright © 2011-2022 走看看