本帖最后由 黄奕豪 于 2012-5-16 21:50 编辑
今天忽然写一个关于double数据问题运算的小程序,忽然发现了一个奇怪的问题,于是做了下面一个求圆面积的小程序来测试,很是疑惑,
传入24的结果是:1808.6399999999999
传入18的结果是:1017.36
传入12的结果是:452.15999999999997
传入9的结果是:254.34
传入6的结果是:113.03999999999999
传入5的结果是:78.5
传入4的结果是:50.24
传入3的结果是:28.259999999999998
传入2的结果是:12.56
传入1的结果是:3.14
为什么传入3、6、12、24 ...这个3加倍的数列的时候结果的小数位数那么多,而传入其他数字的小数位数可以理解。- class Circle//定义圆类
- {
- private static double PI=3.14;//圆周率
- private double radius;
- Circle(double radius)
- {
- this.radius=radius;
- }
- public double getArea()//求圆的面积
- {
- return PI*radius*radius;
- }
- public static void main(String[] a)
- {
- Circle cl=new Circle(2);//在这里传入数据
- System.out.println(cl.getArea());
- }
- }
复制代码 |