//表示需要精确到小数点以后几位
public static final int scale = 2;
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double addDouble(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.add(bd2).doubleValue();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double subDouble(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.subtract(bd2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mulDouble(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.multiply(bd2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double divDouble(double d1,double d2){
return div(d1,d2,scale);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
分享到:
相关推荐
JavaScript小数点精确计算,解决js小数点计算的问题,js计算,js小数计算,js浮点数计算
2+22+222+2222+22......2222精确计算,采用大数算法精确计算
Double类型精确计算,加法,减肥,乘除
sql函数 可用于pb调用,根据生日日期,自动精确计算年龄。返回格式为xx岁xx月xx天 不受闰年影响
java运算工具类,可以处理浮点数的精度丢失问题,可以实现精确计算,常用公共方法抽取,常用工具类11111111111111111111111111111111111111111111111111111111111111111111111111
氦原子基态能量的精确计算,程智,,本文通过虚光子的假设来解决氦原子以及类氦离子基态能量问题。在已有工作基础上,本文假设了在氦原子及类氦离子中,电子与电子、
时间精确计算程序.rar时间精确计算程序.rar时间精确计算程序.rar时间精确计算程序.rar时间精确计算程序.rar时间精确计算程序.rar时间精确计算程序.rar时间精确计算程序.rar
AVR软件延时精确计算指导 AVR软件延时精确计算指导 AVR软件延时精确计算指导 AVR软件延时精确计算指导
在确定多绳摩擦提升系统井口相对位置时,相关设计手册计算公式均存在着一定误差,...本文针对上述问题,给出了计算提升系统井口相对位置的精确公式,并应用平面解析几何知识,对围抱角计算公式进行了推导,提高了计算精度。
精确计算波浪理论的目标位.pdf精确计算波浪理论的目标位.pdf精确计算波浪理论的目标位.pdf精确计算波浪理论的目标位.pdf精确计算波浪理论的目标位.pdf
易语言源码易语言精确计算π值源码.rar 易语言源码易语言精确计算π值源码.rar 易语言源码易语言精确计算π值源码.rar 易语言源码易语言精确计算π值源码.rar 易语言源码易语言精确计算π值源码.rar 易语言源码...
易语言精确计算π值源码,精确计算π值,求圆的面积,求PI
精确计算投影仪,精确计算投影仪和投影幕的距离
精确计算N的阶乘。其中,N可能是小于200的任意正整数。 【输入形式】 输入文件为当前目录下的factor.in。 该文件只包含一个正整数,表示需要求该正整数的阶乘。 【输出形式】 输入文件为当前目录下的factor...
精确计算N的阶乘。其中,N可能是小于200的任意正整数。 【输入形式】 输入文件为当前目录下的factor.in。 该文件只包含一个正整数,表示需要求该正整数的阶乘。 【输出形式】 输入文件为当前目录下的factor...
精确计算任意年份节气,精确到秒,打包PHP类,直接调用方法SolarTerm::getSolarTerms(年份)
精确计算系统启动时间 完美的计算开机所花费的时间 有了这个 神马的金山 360都可以回家了
用Excel精确计算平均发展速度.pdf
自己写的一个精确计算阶乘的算法,可以算5000以内的阶乘,算法效率不高,但是很容易看懂,适合初学者
iOS 解决数值计算(floatValue,doubleValue)不精确问题,一句话解决精确计算,精确比较