为什么不会有精度问题

P1297 [国家集训队] 单选错位

@[callG](/user/55249) 不理解你说的精度损失是什么。
by jifbt @ 2023-01-03 14:50:32


可能会有,但要保留三位小数
by too_simple @ 2023-01-08 16:49:32


@[callG](/user/55249)
by too_simple @ 2023-01-08 16:49:41


@[jifbt](/user/103171) @[too_simple](/user/366937) 测试代码: ```cpp #include <iostream> using namespace std; int main() { double a = 0.8, b = 0.00114514, sum = 0; for (int i = 0; i < 10000000; i++) { sum += a; sum += b; } cout << sum; return 0; } ``` 输出 `8.01145e+06`,而 Python 计算结果为 `8011451.399532496`。 差值约为 1.4。
by callG @ 2023-01-10 00:11:50


@[callG](/user/55249) `cout` 输出过大或小的数会转成科学计数法。 使用 `printf` 输出 `8011451.400`。`cout` 怎么输出我不清楚,你可以搜一下。
by jifbt @ 2023-01-10 08:28:27


你可以使用 ```cpp cout << fixed << setprecision(3) << sum << endl; ``` 与 `printf` 输出一致。
by jifbt @ 2023-01-10 08:32:19


@[jifbt](/user/103171) 还真是,我测试了一些极端数据,误差也小于 0.0005
by callG @ 2023-01-10 11:38:57


|