【发布时间】:2020-12-27 04:37:30
【问题描述】:
printf("%.1f, %.2f", 1.45, 1.445);
输出
1.4、1.45
1.45 是切片的,但 1.445 是四舍五入的。
我发现了这个, Why printf round floating point numbers? 这解释了规范建议对浮点数进行舍入。
编辑: 我使用 VS2017(在 C++ 项目中)和 Dev-C 对其进行了测试。
【问题讨论】:
-
假设您的实现像许多人一样使用 IEEE-754 浮点数,这两个值都没有精确的表示。因此,您在源代码中编写为
1.4的常量被编译为接近但不等于1.4的双精度值。之后它以哪种方式循环是偶然的。 -
试试
printf("%.55f\n%.55f\n", 1.45, 1.445);看看实际数字是多少。 -
题目在题目名称中
标签: c++ c floating-point specifications