zoukankan      html  css  js  c++  java
  • 解决浮点运算精度不准确,BigDecimal 加减乘除

    package com.kflh.boxApi.utils.util;
    
    import java.math.BigDecimal;
    
    /**
     * @program: BoxApi
     * @description: 计算浮点数
     * @author: eterntiyz
     * @create: 2019-01-17 11:10
     */
    public class DoubleCalendar {
    
        /** 
         * @Description: 浮点加法
         * @Param: [] 
         * @return: java.lang.Double 
         * @Author: tonyzhang 
         * @Date: 2019-01-17 11:27
         */ 
        public static Double add(String str1,String str2) {
            BigDecimal bignum1 = new BigDecimal(str1);
            BigDecimal bignum2 = new BigDecimal(str2);
            BigDecimal bignum3 = bignum1.add(bignum2);
            return bignum3.doubleValue();
        }
    
        /** 
         * @Description: 浮点减法 
         * @Param: [] 
         * @return: java.lang.Double 
         * @Author: tonyzhang 
         * @Date: 2019-01-17 11:27
         */ 
        public static Double subtract(String str1,String str2) {
            BigDecimal bignum1 = new BigDecimal(str1);
            BigDecimal bignum2 = new BigDecimal(str2);
            BigDecimal bignum3 = bignum1.subtract(bignum2);
            return bignum3.doubleValue();
        }
    
        /**
         * @Description: 浮点乘法
         * @Param: str1为分母,str2为分子
         * @return: java.lang.Double
         * @Author: tonyzhang
         * @Date: 2019-01-17 11:26
         */
        public static Double multiply(String str1,String str2) {
            BigDecimal bignum1 = new BigDecimal(str1);
            BigDecimal bignum2 = new BigDecimal(str2);
            BigDecimal bignum3 = bignum1.multiply(bignum2);
            return bignum3.doubleValue();
        }
    
        /**
         * @Description: 浮点除法
         * @Param: []
         * @return: java.lang.Double
         * @Author: tonyzhang
         * @Date: 2019-01-17 11:26
         */
        public static Double divide(String str1,String str2) {
            BigDecimal bignum1 = new BigDecimal(str1);
            BigDecimal bignum2 = new BigDecimal(str2);
            //参数意义.bignum1为分母,bignum2为分子,scale保留的位数,BigDecimal.ROUND_DOWN表示不进位
            BigDecimal bignum3 = bignum1.divide(bignum2,2,BigDecimal.ROUND_DOWN);
            return bignum3.doubleValue();
        }
    
        public static void main(String[] args) {
            System.out.println(divide("4600.0","0.6"));
        }
    }
    
    
  • 相关阅读:
    java设计模式0--设计模式简介
    Eclipse常用快捷键与代码模板
    hadoop文件系统与I/O流
    java学习笔记16--I/O流和文件
    hadoop压缩框架
    hadoop中典型Writable类详解
    java学习笔记15--多线程编程基础2
    redis配置密码的方法
    编写的windows程序,崩溃时产生crash dump文件的办法
    windows程序崩溃生成dump文件
  • 原文地址:https://www.cnblogs.com/eternityz/p/12238964.html
Copyright © 2011-2022 走看看