开胃菜
R = new BigDecimal(2.79E+00);
Dxm3d = new BigDecimal(3.99E-04);
Wmd = new BigDecimal(2.39E-03);
x = new BigDecimal(3.2);
t = new BigDecimal(365);
下面是公式
这些值J263是代表我的变量的excel选票。
J253值:2,39E-03是Wmd
J254值:3,99E-04是Dxm3d
J 255值:2,79E00是R
I259:365是吨
J263值:3.2是x
BigDecimal segundoTermo = (R.multiply(x).subtract(Wmd.multiply(t)).divide(new BigDecimal(2d).multiply(new BigDecimal(Math.sqrt(Dxm3d.multiply(R).multiply(t).doubleValue()))), RoundingMode.HALF_DOWN));
System.out.println("value segundoTermo " + segundoTermo);
返回值
valor do segundo termo pfv:6.31838147917065306052600332590254032941338413886611227745342947009953030493273342105799365116070956364
期望值
6,321092458
最佳答案
我说:
我敢打赌,您看到的差异是由于Math.sqrt()
通话需要加倍。您可以看看JScience和
this answer。
但是最终,使用JScience的FloatingPoint返回与问题中的BigDecimal相同的值:
FloatingPoint R = FloatingPoint.valueOf(2.79E+00);
FloatingPoint Dxm3d = FloatingPoint.valueOf(3.99E-04);
FloatingPoint Wmd = FloatingPoint.valueOf(2.39E-03);
FloatingPoint x = FloatingPoint.valueOf(3.2);
FloatingPoint t = FloatingPoint.valueOf(365);
FloatingPoint segundoTermo = (R.times(x).minus(Wmd.times(t)).divide(FloatingPoint.valueOf(2d).times(((Dxm3d.times(R).times(t)).sqrt()))));
System.out.println("value segundoTermo " + segundoTermo);
输出:
value segundoTermo 0.63188145784374107900E1
您确定期望值正确吗?