永发信息网

double a=3.3,a=1.1,int i=a/b. 为什么输出的i是2不是3

答案:2  悬赏:10  手机版
解决时间 2021-03-09 10:35
  • 提问者网友:骨子里的高雅
  • 2021-03-08 12:21
double a=3.3,a=1.1,int i=a/b. 为什么输出的i是2不是3
最佳答案
  • 五星知识达人网友:轻雾山林
  • 2021-03-08 13:25
因为浮点数用二进制表示时都有误差,3.3/1.1并不足3,可能是2.999999999999999999……,而int i=a/b;是要取整赋给i的,所以是2。你可以用printf("%.10f\n",3.3/1/1);打出来看看。
全部回答
  • 1楼网友:撞了怀
  • 2021-03-08 14:08
浮点数(double是64位的)乘法和除法有精度损失,答案可能是 2.99999,被取整了 要想得到3 ,需要 int i= (int)floor(a/b+0.5) , 用四舍五入补齐
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯