| 发表于:2007-10-19 16:27:00 楼主 |
可能有人会说返回了double,自然会出现精度问题,用decimal转换,但我发现相加时是否出现多余小数位居然和输入的数字有关!先看代码: 代码 public class test{ double f1,f2,f3; public static void main(string[] args) { testf = new test(); f.setf1(12.49); f.setf2(14.23); f.setf3(0.95); //注意这几个数字 double all = f.getf1()+f.getf2()+f.getf3(); system.out.println(all); } public double getf1() { return f1; } public void setf1(double f1) { this.f1 = f1; } public double getf2() { return f2; } public void setf2(double f2) { this.f2 = f2; } public double getf3() { return f3; } public void setf3(double f3) { this.f3 = f3; } } 上面计算3个double数相加,我在改变最后一个变量f3的值时,发现有时候会出现多余小数位,有时候又不会,例如f3=0.95的时候,结果是27.669999999999998;但f3=0.85时,结果就是27.57。 我分别尝试了f3从0.15 ~ 0.95,发现在.15/.45/.65/.95会出现多余小数位,其他情况不会。 但却找不到什么规律,不知道是怎么回事,请各位帮忙看看。 |
|
|
|
|