zoukankan      html  css  js  c++  java
  • java精确数字计算

    import java.math.BigDecimal;  
      
    public class MathExtend  
      
    {  
      
      //默认除法运算精度  
      private static final int DEFAULT_DIV_SCALE = 10;  
     
      public static double add(double v1, double v2)  
      {  
          BigDecimal b1 = new BigDecimal(Double.toString(v1));  
          BigDecimal b2 = new BigDecimal(Double.toString(v2));  
       return b1.add(b2).doubleValue();  
      }  
      
       
      
      public static String add(String v1, String v2)  
      {  
          BigDecimal b1 = new BigDecimal(v1);  
          BigDecimal b2 = new BigDecimal(v2);  
          return b1.add(b2).toString();  
      
      }  
      
       
      
       
      
      public static double subtract(double v1, double v2)  
      {  
      
          BigDecimal b1 = new BigDecimal(Double.toString(v1));  
          BigDecimal b2 = new BigDecimal(Double.toString(v2));  
          return b1.subtract(b2).doubleValue();  
      
      }  
      
       
      
       
      
      public static String subtract(String v1, String v2)  
      {  
          BigDecimal b1 = new BigDecimal(v1);  
          BigDecimal b2 = new BigDecimal(v2);  
          return b1.subtract(b2).toString();  
      
      }  
      
       
      
       
      
       
      
      public static double multiply(double v1, double v2)   
      {   
          BigDecimal b1 = new BigDecimal(Double.toString(v1));  
          BigDecimal b2 = new BigDecimal(Double.toString(v2));  
          return b1.multiply(b2).doubleValue();  
      }  
      
       
      
       
      
      public static String multiply(String v1, String v2)  
      {  
          BigDecimal b1 = new BigDecimal(v1);  
          BigDecimal b2 = new BigDecimal(v2);  
          return b1.multiply(b2).toString();  
      }  
      
       
      
       
      
      public static double divide(double v1, double v2)  
      {  
          return divide(v1, v2, DEFAULT_DIV_SCALE);  
      }  
      
       
      
       
      
      public static double divide(double v1,double v2, int scale)  
      {  
          return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);  
      }  
     
      
      public static double divide(double v1,double v2,int scale, int round_mode){  
              if(scale < 0)  
              {  
                  throw new IllegalArgumentException("The scale must be a positive integer or zero");  
              }  
      
              BigDecimal b1 = new BigDecimal(Double.toString(v1));  
              BigDecimal b2 = new BigDecimal(Double.toString(v2));  
              return b1.divide(b2, scale, round_mode).doubleValue();  
      }  
     
      
      public static String divide(String v1, String v2)  
      {  
          return divide(v1, v2, DEFAULT_DIV_SCALE);  
      }  
      
     
      public static String divide(String v1, String v2, int scale)  
      {  
          return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_EVEN);  
      }  
      
     
      public static String divide(String v1, String v2, int scale, int round_mode)  
      {  
          if(scale < 0)  
          {  
              throw new IllegalArgumentException("The scale must be a positive integer or zero");  
          }  
      
          BigDecimal b1 = new BigDecimal(v1);  
          BigDecimal b2 = new BigDecimal(v2);  
          return b1.divide(b2, scale, round_mode).toString();  
      
      }  
     
      
      public static double round(double v,int scale)  
      {  
          return round(v, scale, BigDecimal.ROUND_HALF_EVEN);  
      }  
     
      
      public static double round(double v, int scale, int round_mode)  
      {  
         if(scale<0)  
         {  
             throw new IllegalArgumentException("The scale must be a positive integer or zero");  
         }  
      
         BigDecimal b = new BigDecimal(Double.toString(v));  
         return b.setScale(scale, round_mode).doubleValue();  
      }  
     
      
      public static String round(String v, int scale)  
      {  
        return round(v, scale, BigDecimal.ROUND_HALF_EVEN);  
      }  
      
     
      public static String round(String v, int scale, int round_mode)  
      {  
         if(scale<0)  
         {  
             throw new IllegalArgumentException("The scale must be a positive integer or zero");  
         }  
      
         BigDecimal b = new BigDecimal(v);  
         return b.setScale(scale, round_mode).toString();  
      
      }  
      
    }  
  • 相关阅读:
    设置zookeeper开机自启动
    安装zookeeper
    Elasticsearch 5.6.5 安装head插件
    [redis] Node is not empty. Either the node already knows other nodes
    【redis】 redis 创建集群时,Waiting for the cluster to join.... 一直等待
    [redis] redis.clients.jedis.exceptions.JedisDataException: MOVED 13102 127.0.0.1
    [linux] FastDFS访问文件,400 Bad Request
    [linux] Nginx编译安装错误error: the HTTP rewrite module requires the PCRE library
    [java] java解析txt文件
    【java】 java 解压tar.gz读取内容
  • 原文地址:https://www.cnblogs.com/wangdonghua/p/3320864.html
Copyright © 2011-2022 走看看