C语言中的精度问题

qq_34768114 2016-09-20 11:52:50
在C语言进行浮点类型运算时,为什么结果会出现这样的情况?
...全文
490 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
精度问题,有两个方面。 一是表达能力的问题,也就是我们不能精确表达任意大(或者任意小)的数,不论浮点还是整数,这个问题是无解的,因为计算机的存储量有限、运算速度有限。 二是误差问题,根本原因在于二进制格式浮点数并不能精确表示任意十进制数,比如1.773。这个倒是有办法解决,就是使用十进制浮点运算,比如IEEE 754-2008标准就支持十进制浮点格式(decimal32、decimal64、decimal128)。可惜到目前为止还没有硬件支持,不过intel DFP支持十进制浮点格式运算(软件实现),C语言有一个扩展方案支持十进制浮点运算,不过还不是标准,只是技术报告:ISO/IEC DTR 24732。
ooolinux 2016-09-20
  • 打赏
  • 举报
回复
从数的进制、CPU硬件和指令来考虑就会明白。计算机是工程的产品,不是理想化的。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧