java中double型数据的加减乘除
publicclassArith{
privatestaticfinalintDEF_DIV_SCALE=10;
/**
*两个Double数相加
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoubleadd(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.add(b2).doubleValue();
}
/**
*两个Double数相减
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoublesub(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.subtract(b2).doubleValue();
}
/**
*两个Double数相乘
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoublemul(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.multiply(b2).doubleValue();
}
/**
*两个Double数相除
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoublediv(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
*两个Double数相除,并保留scale位小数
*@paramv1
*@paramv2
*@paramscale
*@returnDouble
*/
publicstaticDoublediv(Doublev1,Doublev2,intscale){
if(scale<0){
thrownewIllegalArgumentException(
"Thescalemustbeapositiveintegerorzero");
}
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
privatestaticfinalintDEF_DIV_SCALE=10;
/**
*两个Double数相加
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoubleadd(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.add(b2).doubleValue();
}
/**
*两个Double数相减
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoublesub(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.subtract(b2).doubleValue();
}
/**
*两个Double数相乘
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoublemul(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.multiply(b2).doubleValue();
}
/**
*两个Double数相除
*@paramv1
*@paramv2
*@returnDouble
*/
publicstaticDoublediv(Doublev1,Doublev2){
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
*两个Double数相除,并保留scale位小数
*@paramv1
*@paramv2
*@paramscale
*@returnDouble
*/
publicstaticDoublediv(Doublev1,Doublev2,intscale){
if(scale<0){
thrownewIllegalArgumentException(
"Thescalemustbeapositiveintegerorzero");
}
BigDecimalb1=newBigDecimal(v1.toString());
BigDecimalb2=newBigDecimal(v2.toString());
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
本文提供了一个Java类Arith,用于处理Double类型数据的精确加减乘除运算,通过使用BigDecimal来确保运算精度,并提供了保留指定小数位数的除法方法。
677

被折叠的 条评论
为什么被折叠?



