【发布时间】:2018-01-24 16:47:54
【问题描述】:
#include <stdio.h>
int main() {
float k;
scanf("%f", &k);
printf("%f", k);
}
在这个简单的程序中,当我输入一个最多包含 8 位数字的数字时,它会正确显示。
但如果我超过 8 位数字,即输入 123456789,则输出为 123456792。
为什么会这样?有趣的事实是,如果我输入介于123456789 和123456796 之间的任何数字,那么它总是显示123456792。
与浮点数的 8 位精度有关吗?
【问题讨论】:
-
@HariomSingh 这个链接的问题有什么关系?它甚至不是同一种语言。
-
@Toby 问题最初是用c++ 双重标记的,由于代码和文本均未引用 C++,因此将其删除。
-
...也许你需要
double而不是float。
标签: c gcc floating-point scanf