数字丢失精度?
Java code
double m=0.0;
double n=6.4;
double p=0;
do
{
m=Math.pow(n+1,1/3);
if(m-n>0)
{
p=m-n;
}
else
{
p=n-m;
}
n=m;
System.out.println(m);
}while(p>0.0000000001);
计算x=(x+1)的1/3次方方程的解,算出来的结果不对,估计是数字的精度什么的出问题了,大家帮忙看看
------解决方案--------------------小数计算请用BigDecimal
------解决方案--------------------你可以看下Math.pow方法。里面有讲的,1/3是一个正无穷大的数。pow的方法是直接给你返回了1.0
用BigDecimal也不行的。是pow方法内部返回本来就是1.0
------解决方案--------------------Math.pow(3, new BigDecimal("1").divide(new BigDecimal("3"), 3, RoundingMode.HALF_DOWN).doubleValue())
------解决方案--------------------如果结果要更精确你可以保留100位来计算都没问题。。。
------解决方案--------------------看一下浮点小数运算的规定,好像是IEE多少来着,忘了,你搜下
------解决方案--------------------1/3=0,我觉得问题出在这里吧。