我写这段代码是为了在处理浮点数时显示不准确之处:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
float sum1 = 0, sum2 = 0, sum3 = 0;
double sum4 = 0, sum5 = 0, sum6 = 0;
printf("%f + %f = $fn", 0.1, 0.2, 0.1 + 0.2);
printf("%f + %f = $fn", 0.1, 0.3, 0.1 + 0.2);
for (float i = 1; i <= 10000; i++) {
sum1 = sum1 + (1 / i);
}
for (double i = 1; i <= 10000; i++) {
sum4 = sum4 + (1 / i);
}
for (float i = 1; i <= 100000; i++) {
sum2 = sum2 + (1 / i);
}
for (double i = 1; i <= 100000; i++) {
sum5 = sum5 + (1 / i);
}
for (float i = 1; i <= 1000000; i++) {
sum3 = sum3 + (1 / i);
}
for (double i = 1; i <= 1000000; i++) {
sum6 = sum6 + (1 / i);
}
printf("%f t %lf n%f t %lf n%f t %lf n", sum1, sum4, sum2, sum5, sum3, sum6);
return 0;
}
尤其是部分
printf("%f + %f = $fn", 0.1, 0.2, 0.1 + 0.2);
printf("%f + %f = $fn", 0.1, 0.3, 0.1 + 0.2);
我很困惑,因为等号后的输出是$f,我无法向自己解释。你能向我解释一下这句话的意思吗?注:我在网上搜索了一下,没有发现任何相关信息。
printf
正在打印$f
,实际上,它不将其识别为有效的说明符,除了printf
说明符流只接受2个浮点值,但您有3个参数之外,第三个参数将不会打印。
如果你确实想打印第三个参数,看看你的代码,这是有意义的,那么这是一个拼写错误,它应该是%f
。
正如chqrlie在下面指出的,你也可能打错了键,因为$
和%
可能并排在你的键盘上。