|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。这个类的确好用。在网上找到年夜的,是一个女Java程序员写的。凶猛~~~~~~哈哈
/*
*创立日期2004-10-14
*
*假如必要准确盘算,非要用String来够造BigDecimal不成
*/
packagecom.lims.actions.testqc.comm;
/**
*@authorJstar
*
*
*窗口>首选项>Java>代码天生>代码和正文
*/
importjava.math.BigDecimal;
/**
*因为Java的复杂范例不克不及够准确的对浮点数举行运算,这个工具类供应精
*确的浮点数运算,包含加减乘除和四舍五进。
*/
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();
}
};
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... |
|