【发布时间】:2017-01-01 16:56:46
【问题描述】:
我尝试了几个小时来转换一个整数,比如 33333333 使用内部函数 real(int) 转换为一个实数。我最终得到的只是最接近的偶数,有时是 33333332 或 33333334。使用小于 8 位的整数一切正常。一些以 1 开头的 8 位数字也可以,但从 20000001 开始我得到一个错误的实数...
有什么建议吗?
我的系统:ubuntu 14.04 LTS 和 gcc 4.8.4
【问题讨论】:
-
你能显示你的代码/提供minimal reproducible example吗?
-
您的实数模型不能准确地表示所有整数。对于有人提供一个很好的解释,了解您的浮点知识水平会有所帮助。
-
33333333 不能用 IEEE 754 单精度浮点表示。
-
感谢您的 cmets,下面的示例说明了我的意思...