小猴雏 2015-04-01 13:44 采纳率: 20%
浏览 2695
已采纳

double的精度????

public class yuan {

 static double  C(double r){
 return 3.14*r*r;

}

public static void main(String[] args) {

double a=3.14;
for(int i=1;i<30;i++){
System.out.println(i);
System.out.println(C(i));
System.out.println(a*i*i);
}
}

}
输出结果是1
3.14
3.14
2
12.56
12.56
3
28.259999999999998
28.259999999999998
4
50.24
50.24
5
78.5
78.5
6
113.03999999999999
113.03999999999999
7
153.86
153.86
8
200.96
200.96
9
254.34
254.34
10
314.0
314.0
11
379.94
379.94
12
452.15999999999997
452.15999999999997
13
530.66
530.66
14
615.44
615.44
15
706.5
706.5
16
803.84
803.84
17
907.46
907.46
18
1017.36
1017.36
19
1133.54
1133.54
20
1256.0
1256.0
21
1384.74
1384.74
22
1519.76
1519.76
23
1661.06
1661.06
24
1808.6399999999999
1808.6399999999999
25
1962.5
1962.5
26
2122.64
2122.64
27
2289.06
2289.06
28
2461.76
2461.76
29
2640.7400000000002
2640.7400000000002
请教大神们 为什么只有在 3 6 12 24 29 时候精度如此不同 小数点后面为什么这么多位???
谢谢

  • 写回答

3条回答

  • threenewbee 2015-04-01 16:17
    关注

    要明白一点,浮点数在计算机内是用二进制表示的,而不是所有的10进制数都可以精确转换成二进制,所以某些情况下,会有转换误差。
    反过来,浮点数存在一个有效精度的问题,不能简单理解为转换为10进制以后有多少小数位就是它的精度,这是两个概念。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮