xih |
|
|||
日歷
導航常用鏈接留言簿(2)隨筆檔案搜索最新評論
閱讀排行榜評論排行榜 |
??? java中用DecimalFormat df = new
DecimalFormat("#######0.00");進行四舍五入時,如果最后一位為5,則會直接舍掉,而不會入上去。如:12.515,得到得
結果將是12.51。解決方法:
public?static?double?round(double?v,int?scale){ ??? java中的浮點數類型float和double不能進行運算,遇到有些數據得到的數據不準確。如:3.121-1=3.1209999999998。解決方法:????????if(scale<0){ ????????????throw?new?IllegalArgumentException( ????????????????"The?scale?must?be?a?positive?integer?or?zero"); ????????} ????????BigDecimal?b?=?new?BigDecimal(Double.toString(v)); ????????BigDecimal?one?=?new?BigDecimal("1"); ????????return?b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); ????} public?class?Arith?{ ????private?static?final?int?DEF_DIV_SCALE?=?10; ???? ????/** ?????*?兩個Double數相加 ?????*?@param?v1 ?????*?@param?v2 ?????*?@return?Double ?????*/ ????public?static?Double?add(Double?v1,Double?v2){ ????????BigDecimal?b1?=?new?BigDecimal(v1.toString()); ????????BigDecimal?b2?=?new?BigDecimal(v2.toString()); ????????return?b1.add(b2).doubleValue(); ????} ???? ????/** ?????*?兩個Double數相減 ?????*?@param?v1 ?????*?@param?v2 ?????*?@return?Double ?????*/ ????public?static?Double?sub(Double?v1,Double?v2){ ????????BigDecimal?b1?=?new?BigDecimal(v1.toString()); ????????BigDecimal?b2?=?new?BigDecimal(v2.toString()); ????????return?b1.subtract(b2).doubleValue(); ????} ???? ????/** ?????*?兩個Double數相乘 ?????*?@param?v1 ?????*?@param?v2 ?????*?@return?Double ?????*/ ????public?static?Double?mul(Double?v1,Double?v2){ ????????BigDecimal?b1?=?new?BigDecimal(v1.toString()); ????????BigDecimal?b2?=?new?BigDecimal(v2.toString()); ????????return?b1.multiply(b2).doubleValue(); ????} ???? ????/** ?????*?兩個Double數相除 ?????*?@param?v1 ?????*?@param?v2 ?????*?@return?Double ?????*/ ????public?static?Double?div(Double?v1,Double?v2){ ????????BigDecimal?b1?=?new?BigDecimal(v1.toString()); ????????BigDecimal?b2?=?new?BigDecimal(v2.toString()); ????????return?b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue(); ????} ???? ????/** ?????*?兩個Double數相除,并保留scale位小數 ?????*?@param?v1 ?????*?@param?v2 ?????*?@param?scale ?????*?@return?Double ?????*/ ????public?static?Double?div(Double?v1,Double?v2,int?scale){ ????????if(scale<0){ ????????????throw?new?IllegalArgumentException( ????????????"The?scale?must?be?a?positive?integer?or?zero"); ????????} ????????BigDecimal?b1?=?new?BigDecimal(v1.toString()); ????????BigDecimal?b2?=?new?BigDecimal(v2.toString()); ????????return?b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); ????} } |
![]() |
|
Copyright © 費思量 | Powered by: 博客園 模板提供:滬江博客 |