日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java float 高效加减_java Double 进行加减乘除

發布時間:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java float 高效加减_java Double 进行加减乘除 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Double 工具類

package org.fh.util;

import java.io.Serializable;

import java.math.BigDecimal;

import java.math.RoundingMode;

/**

* double的計算不精確,會有類似0.0000000000000002的誤差,正確的方法是使用BigDecimal或者用整型

* 整型地方法適合于貨幣精度已知的情況,比如12.11+1.10轉成1211+110計算,最后再/100即可 以下是摘抄的BigDecimal方法:

*/

/**

* 說明:Double工具類

* from:www.1b23.com

*/

public class DoubleUtil implements Serializable {

private static final long serialVersionUID = -3345205828566485102L;

// 默認除法運算精度

private static final Integer DEF_DIV_SCALE = 2;

/**

* 提供精確的加法運算。

*

* @param value1 被加數

* @param value2 加數

* @return 兩個參數的和

*/

public static Double add(Double value1, Double value2) {

BigDecimal b1 = new BigDecimal(Double.toString(value1));

BigDecimal b2 = new BigDecimal(Double.toString(value2));

return b1.add(b2).doubleValue();

}

/**

* 提供精確的減法運算。

*

* @param value1 被減數

* @param value2 減數

* @return 兩個參數的差

*/

public static double sub(Double value1, Double value2) {

BigDecimal b1 = new BigDecimal(Double.toString(value1));

BigDecimal b2 = new BigDecimal(Double.toString(value2));

return b1.subtract(b2).doubleValue();

}

/**

* 提供精確的乘法運算。

*

* @param value1 被乘數

* @param value2 乘數

* @return 兩個參數的積

*/

public static Double mul(Double value1, Double value2) {

BigDecimal b1 = new BigDecimal(Double.toString(value1));

BigDecimal b2 = new BigDecimal(Double.toString(value2));

return b1.multiply(b2).doubleValue();

}

/**

* 提供(相對)精確的除法運算,當發生除不盡的情況時, 精確到小數點以后10位,以后的數字四舍五入。

*

* @param dividend 被除數

* @param divisor 除數

* @return 兩個參數的商

*/

public static Double divide(Double dividend, Double divisor) {

return divide(dividend, divisor, DEF_DIV_SCALE);

}

/**

* 提供(相對)精確的除法運算。 當發生除不盡的情況時,由scale參數指定精度,以后的數字四舍五入。

*

* @param dividend 被除數

* @param divisor 除數

* @param scale 表示表示需要精確到小數點以后幾位。

* @return 兩個參數的商

*/

public static Double divide(Double dividend, Double divisor, Integer scale) {

if (scale < 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDecimal b1 = new BigDecimal(Double.toString(dividend));

BigDecimal b2 = new BigDecimal(Double.toString(divisor));

return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue();

}

/**

* 提供指定數值的(精確)小數位四舍五入處理。

*

* @param value 需要四舍五入的數字

* @param scale 小數點后保留幾位

* @return 四舍五入后的結果

*/

public static double round(double value, int scale) {

if (scale < 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDecimal b = new BigDecimal(Double.toString(value));

BigDecimal one = new BigDecimal("1");

return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();

}

}

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java float 高效加减_java Double 进行加减乘除的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。