bigdecimal转double精度变了,字符串转bigdecimal类型
33558www.Sina.com/double的加减乘除运算容易失去精度,因此一般将double转换为BigDecimal,调用BigDecimal的加减乘除方法进行运算后,再转换为double型
Double转换成BigDecimal进行运算的整理
bigdecimal bignum1=new bigdecimal (' 10 ); bigdecimal bignum2=new bigdecimal ('5); BigDecimal bignum3=null; //加法bignum3=bignum1.add(bignum2); System.out.println (是指(bignum3); //减法bignum3=bignum1. subtract (bignum2); System.out.println (差为' bignum3); //乘法bignum3=bignum1. multiply (bignum2); System.out.println ('乘积为' bignum3); //除法bignum3=bignum1.divide(bignum2); System.out.println ()商为(bignum3);BigDecimal的运算(加减乘除)
public class Arith { /** *是用于精确加法计算的add方法* @param value1被加数* @param value2加数* @return这两个参数之和*/publicstaticdoubleadd (doublevarith doublevalue2(bigdecimal B1=new bigdecimal ) double.valueof ) value1); bigdecimal B2=new bigdecimal (double.value of ) value2); returnB1.add(B2 ).doubleValue ); } /** *提供严格减法的sub方法* @param value1被减数* @param value2减数* @return两个参数之差*/publicstaticdoublesub (doublevalue 1,dourn returnB1.subtract(B2 ).doubleValue ); } /** *提供严格乘法的mul方法* @param value1被乘数* @param value2乘数* @return个参数的乘积*/publicstaticdoublemul (doublevalue 1,) returnB1.multiply(B2 ).doubleValue ); } /** *精确除法div * @param value1被除数* @param value2除数* @param scale精确范围* @return两个参数的商*@throwsillegalaccessexception*/提供的publicstaticdoublediv (doublevalue 1,double value2,int scale ) throwsillegalaccessexception(/如果确切范围小于0,则为异常信息if ) scale0 bigdecimal B2=new bigdecimal (double.value of ) value2); returnB1.divide(B2,scale ).doubleValue ); }