- 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,我觉得问题出在这里吧。