读书人

数字丢失精度?解决办法

发布时间: 2012-03-11 18:15:39 作者: rapoo

数字丢失精度?

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

读书人网 >J2SE开发

热点推荐