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();  
      
      }  
      
    }  
  • 相关阅读:
    [LeetCode]Add Two Numbers
    [LeetCode]Longest SubString Without Repeating Characters
    [LeetCode]Median of Two Sorted Arrays
    [LeetCode]Two Sum
    动态规划
    [shell编程]一个简单的脚本
    一些linux的问题
    核稀疏表示分类(KSRC)
    conda 按照指定源下载python包
    python 保留两位小数
  • 原文地址:https://www.cnblogs.com/wangdonghua/p/3320864.html
Copyright © 2011-2022 走看看