Онлайн компилятор C

#include <stdio.h> int main(void) { int N; scanf("%d", &N); float sum = 0.0f; float x; // x从1.0,每次+0.1,小于N时循环 for (x = 1.0f; x < N; x += 0.1f) { sum += x * x; } // 保留1位小数输出 printf("%.1f", sum); return 0; }
这段代码试图计算从1.0开始,每次增加0.1,直到小于N的所有数的平方和。但这里有一个常见的浮点数精度问题。

- 浮点数(如float)无法精确表示0.1这样的十进制小数,因此循环次数可能比预期少一次或多一次,导致结果不准确。
- 循环条件 `x < N` 使用浮点数比较,由于累积误差,可能无法在预期的最后一个值处正确停止。

建议考虑使用整数循环来控制次数,避免直接依赖浮点数累加作为循环条件。