为以下代码输入大数字会导致scanf
成功,尽管该值未正确存储。
printf("\nDouble max: %f\n", DBL_MAX);
printf("\nFloat max: %f\n", FLT_MAX);
printf("\nPlease insert root1 data: ");
float input1;
scanResult = scanf("%f", &input1);
printf("\nScan Result is %d\n", scanResult);
double input2;
printf("\nPlease insert root2 data: ");
scanResult = scanf("%lf", &input2);
printf("\nScan Result is %d\n", scanResult);
printf("%f", input1);
printf("%f", input2);
输出:
Double max: 17976931348623157000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000
0.000000
Float max: 340282346638528860000000000000000000000.000000
Please insert root1 data: 1872389723948273985723984756982375698374568
Scan Result is 1
Please insert root2 data: 928734812348721834.2348275
Scan Result is 1
1.#INF00
928734812348721790.000000
所以我的问题是:
第一次扫描:为什么
scanf
扫描结果还是1,你可以看到值没有正确存储?第二次扫描:为什么它会进行四舍五入,我该如何解决?
一般来说:通过 0 的数量,我们可以看到
DBL_MAX
和FLT_MAX
比我给出的输入要大得多。那么为什么它不能正确存储输入呢?