sinat_29373003 2015-07-08 10:14 采纳率: 80%
浏览 2389

为什么编写c程序时,200*5*0.85等于849????

不应该等于850吗???
#include
int main(void)
{
const int danjia = 5;
int shuliang = 0;
int zongjia = 0;
int zan = 0;
printf("shurushuliang:");
scanf("%d",&shuliang);
zan = shuliang * danjia;
if((zan > 30) && (zan <= 50))
zongjia = shuliang*danjia*0.9;
printf("%d",zongjia);
if(zan > 50)
{
zongjia = shuliang*danjia*0.85;
printf("%d",zongjia);
}
else
printf("%d",shuliang*danjia);
return 0;
}

  • 写回答

11条回答 默认 最新

  • 91program 博客专家认证 2015-07-08 10:19
    关注

    这完全是因为浮点型计算精度的问题
    0.85 在实际参与运算进,可能是 0.8499999999999,而导致结果是 849.

    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)