开发者社区> 问答> 正文

一个 float 变量赋值为 3.1 时, 为什么 printf 输出的值为 3.0999999?

一个 float 变量赋值为 3.1 时, 为什么 printf 输出的值为 3.0999999?

展开
收起
游客py5kcp7dd6tu6 2022-03-29 21:30:08 482 0
1 条回答
写回答
取消 提交回答
  • 大多数电脑都是用二进制来表示浮点和整数的。在十进制里, 0.1 是个简单、精确 的小数, 但是用二进制表示起来却是个循环小数 0.0001100110011 ...。 所以 3.1 在十进制内可以准确地表达, 而在二进制下不能。 在对一些二进制中无法精确表示的小数进行赋值或读入再输出时, 也就是从十进制 转成二进制再转回十进制, 你会观察到数值的 不一致. 这是由于编译器二进制/十进制转换例程的精确度引起的, 这些例程也用在 printf 中。

    2022-03-29 21:30:26
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载