信息技术段子手 2022-08-18 20:11 采纳率: 100%
浏览 36
已结题

计算得出5.2+3.1=8.29999,浮点数加法不准确如何解决?

计算得出5.2+3.1=8.29999,浮点数加法不准确如何解决?

int main()
{
float a,b,c;
a = 5.2;
b = 3.1;
c = a+b ;
printf("%f", c);
return 0;
}

计算的时候因为进制转换丢失了一定的精度,所以显示8.29999,想了解是否是加上某段代码就能变成跟平时用的计算器一样能算精准数?

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-08-18 20:14
    关注

    看你需要保留几位小数了。浮点数的精度有限的很。
    比如你就想输入出8.3,那么改为printf("%.1f",c);它会四舍五入

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 快乐的小小鸟 2022-08-18 20:18
    关注

    本来就是不准的, 你出来工作也是这样的。
    往往都是 保留2位小数 。比如 10 处于 3 , 得出的结果是 3.33% ,3.33% , 3.33% 。不可能完全等于100%

    评论
  • 兔子递归 2022-08-18 23:32
    关注

    可以定义double变量,更加精确。
    输出时使用printf("%.10f", c);,即可四舍五入精确到小数点后10位。

    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月26日
  • 已采纳回答 8月18日
  • 创建了问题 8月18日

悬赏问题

  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改
  • ¥15 百鸡问题 c++编程问题(相关搜索:输出数据)