Java中BigDecimal的基本运算(详解)
BigDecimal一共有4个够造方法,让来看看其中比较常用的两种用法:
第一种:BigDecimal(doubleval)
TranslatesadoubleintoaBigDecimal.
第二种:BigDecimal(Stringval)
TranslatestheStringrepresentationofaBigDecimalintoaBigDecimal.
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
publicstaticdoubleadd(doublev1,doublev2) publicstaticdoublesub(doublev1,doublev2) publicstaticdoublemul(doublev1,doublev2) publicstaticdoublediv(doublev1,doublev2) publicstaticdoublediv(doublev1,doublev2,intscale) publicstaticdoubleround(doublev,intscale)
基本使用:
publicclassArith{ privatestaticfinalintDEF_DIV_SCALE=10;//这个类不能实例化 privateArith(){ } /** *提供精确的加法运算。 *@paramv1被加数 *@paramv2加数 *@return两个参数的和 */ publicstaticdoubleadd(doublev1,doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2)); returnb1.add(b2).doubleValue(); } /** *提供精确的减法运算。 *@paramv1被减数 *@paramv2减数 *@return两个参数的差 */ publicstaticdoublesub(doublev1,doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2)); returnb1.subtract(b2).doubleValue(); } /** *提供精确的乘法运算。 *@paramv1被乘数 *@paramv2乘数 *@return两个参数的积 */ publicstaticdoublemul(doublev1,doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2)); returnb1.multiply(b2).doubleValue(); } /** *提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 *小数点以后10位,以后的数字四舍五入。 *@paramv1被除数 *@paramv2除数 *@return两个参数的商 */ publicstaticdoublediv(doublev1,doublev2){ returndiv(v1,v2,DEF_DIV_SCALE); } /** *提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 *定精度,以后的数字四舍五入。 *@paramv1被除数 *@paramv2除数 *@paramscale表示表示需要精确到小数点以后几位。 *@return两个参数的商 */ publicstaticdoublediv(doublev1,doublev2,intscale){ if(scale<0){ thrownewIllegalArgumentException("Thescalemustbeapositiveintegerorzero"); } BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2)); returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } /** *提供精确的小数位四舍五入处理。 *@paramv需要四舍五入的数字 *@paramscale小数点后保留几位 *@return四舍五入后的结果 */ publicstaticdoubleround(doublev,intscale){ if(scale<0){ thrownewIllegalArgumentException("Thescalemustbeapositiveintegerorzero"); } BigDecimalb=newBigDecimal(Double.toString(v)); BigDecimalone=newBigDecimal("1"); returnb.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } }
以上这篇Java中BigDecimal的基本运算(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。