數學運算Java工具類

jopen 11年前發布 | 27K 次閱讀 Java Java開發

    import java.math.BigDecimal;

public class NumberUtil {  

    private static final int DEFAULT_DIV_SCALE = 10;  

    /** 
     * 相加 
     * @param v1 
     * @param v2 
     * @return double 
     */  
    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();  

    }  

    /** 
     * 相減 
     * @param v1 
     * @param v2 
     * @return 
     */  
    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();  

    }  

    /** 
     * 相乘 
     * @param v1 
     * @param v2 
     * @return 
     */  
    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();  

    }  

    /** 
     * 相除 
     * @param v1 
     * @param v2 
     * @return double 
     */  
    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();  
    }  

    public static void main(String[] args) {  
        System.out.println(2.21 - 2);  
        System.out.println(7 * 0.8);  

        System.out.println(subtract(312.21, 312));  
        System.out.println(multiply(7, 0.8));  
    }  

}  </pre><br />
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!