由於Java的簡單類型不能夠精確的對浮點數進行運算
以下為代碼
import java
public class Arith {
//默認除法運算精度
private static final int DEF_DIV_SCALE =
//這個類不能實例化
private Arith(){
}
/**
* 提供精確的加法運算
* @param v
* @param v
* @return 兩個參數的和
*/
public static double add(double v
BigDecimal b
BigDecimal b
return b
}
/**
* 提供精確的減法運算
* @param v
* @param v
* @return 兩個參數的差
*/
public static double sub(double v
BigDecimal b
BigDecimal b
return b
}
/**
* 提供精確的乘法運算
* @param v
* @param v
* @return 兩個參數的積
*/
public static double mul(double v
BigDecimal b
BigDecimal b
return b
}
/**
* 提供(相對)精確的除法運算
* 小數點以後
* @param v
* @param v
* @return 兩個參數的商
*/
public static double div(double v
return div(v
}
/**
* 提供(相對)精確的除法運算
* 定精度
* @param v
* @param v
* @param scale 表示表示需要精確到小數點以後幾位
* @return 兩個參數的商
*/
public static double div(double v
if(scale<
throw new IllegalArgumentException(
}
BigDecimal b
BigDecimal b
return b
}
/**
* 提供精確的小數位四捨五入處理
* @param v 需要四捨五入的數字
* @param scale 小數點後保留幾位
* @return 四捨五入後的結果
*/
public static double round(double v
if(scale<
throw new IllegalArgumentException(
}
BigDecimal b = new BigDecimal(Double
BigDecimal one = new BigDecimal(
return b
}
}
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25460.html