为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

6 回答

我用的是float avg=(age1+age2+age3+age4)/4;  可以算出平均年龄26.0,但是4后面不应该加个f吗?如下:

float avg=(age1+age2+age3+age4)/4f;  就会报错。

0 回复 有任何疑惑可以回复我~

所以那个4.25是本身是没算错误的  只是表示方法不同是吗

0 回复 有任何疑惑可以回复我~

4 和4.0 在计算机中 根本不是一个数  小数二进制是不准确的

0 回复 有任何疑惑可以回复我~

4 个人 你用4.0 

服了


用下面 这个算就行了

double avg=sum/4;

没有必要纠结这个问题。

实际上,不是运算本身会出错,而是计算机根本就不能精确的表示很多数,比如0.1这个数。

计算机是用一种二进制格式存储小数的,这个二进制格式不能精确表示0.1,它只能表示一个非常接近0.1但又不等于0.1的一个数。

数字都不能精确表示,在不精确数字上的运算结果不精确也就不足为奇了


0 回复 有任何疑惑可以回复我~

可以自己试试看,就知道区别在哪里了

0 回复 有任何疑惑可以回复我~
#1

weibo_艧叆濣_03653610 提问者

可是前者是26.0,后者是26.25?为什么呀?
2017-08-24 回复 有任何疑惑可以回复我~
#2

慕的地2097853 回复 weibo_艧叆濣_03653610 提问者

你的sum=多少,是int吧
2017-08-25 回复 有任何疑惑可以回复我~
#3

weibo_艧叆濣_03653610 提问者 回复 慕的地2097853

恩恩~是int的
2017-08-26 回复 有任何疑惑可以回复我~

sum/4.0;可以自动转换成double类型

0 回复 有任何疑惑可以回复我~
#1

weibo_艧叆濣_03653610 提问者

可是前者是26.0,后者是26.25?为什么呀?
2017-08-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于double的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信