广告设计公司制作/海外aso优化
1 packagetest.test;2 3 importjava.math.BigDecimal;4 5 /**6 * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。7 */8 9 publicclassTest {10 //默认除法运算精度11 privatestaticfinalintDEF_DIV_SCALE=10;12 13 //这个类不能实例化14 publicTest() {15 }16 17 18 19 /**20 * 提供精确的加法运算。21 *@paramv1 被加数22 *@paramv2 加数23 *@return两个参数的和24 */25 publicstaticdoubleadd(doublev1,doublev2) {26 27 BigDecimal b1=newBigDecimal(Double.toString(v1));28 29 BigDecimal b2=newBigDecimal(Double.toString(v2));30 31 returnb1.add(b2).doubleValue();32 33 }34 35 /**36 * 提供精确的减法运算。37 *@paramv1 被减数38 *@paramv2 减数39 *@return两个参数的差40 */41 publicstaticdoublesub(doublev1,doublev2) {42 43 BigDecimal b1=newBigDecimal(Double.toString(v1));44 45 BigDecimal b2=newBigDecimal(Double.toString(v2));46 47 returnb1.subtract(b2).doubleValue();48 }49 50 /**51 * 提供精确的乘法运算。52 *@paramv1 被乘数53 *@paramv2 乘数54 *@return两个参数的积55 */56 publicstaticdoublemul(doublev1,doublev2) {57 58 BigDecimal b1=newBigDecimal(Double.toString(v1));59 60 BigDecimal b2=newBigDecimal(Double.toString(v2));61 62 returnb1.multiply(b2).doubleValue();63 64 }65 66 /**67 * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 108. 109. * 小数点以后10位,以后的数字四舍五入。68 *@paramv1 被除数69 *@paramv2 除数70 *@return两个参数的商71 */72 publicstaticdoublediv(doublev1,doublev2) {73 returndiv(v1, v2, DEF_DIV_SCALE);74 }75 76 /**77 * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。78 *@paramv1 被除数79 *@paramv2 除数80 *@paramscale 表示表示需要精确到小数点以后几位。81 *@return两个参数的商82 */83 publicstaticdoublediv(doublev1,doublev2,intscale) {84 if(scale<0) {85 thrownewIllegalArgumentException("The scale must be a positive integer or zero");86 }87 BigDecimal b1=newBigDecimal(Double.toString(v1));88 89 BigDecimal b2=newBigDecimal(Double.toString(v2));90 91 returnb1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();92 }93 94 /**95 * 提供精确的小数位四舍五入处理。96 *@param需要四舍五入的数字97 *@paramscale 小数点后保留几位98 *@return四舍五入后的结果99 */100 publicstaticdoubleround(doublev,intscale) {101 102 if(scale<0) {103 thrownewIllegalArgumentException("The scale must be a positive integer or zero");104 }105 106 BigDecimal b=newBigDecimal(Double.toString(v));107 108 BigDecimal one=newBigDecimal("1");109 110 returnb.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();111 112 }113 114 }