社区讨论

如何解决一些数学题中的精度误差?

学术版参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhjcwaq7
此快照首次捕获于
2025/11/04 00:30
4 个月前
此快照最后确认于
2025/11/04 00:30
4 个月前
查看原帖
rt。今天模拟了一套2024年s组复赛的真题。在我信心满满的交t2的时候,发现炸了。原因是这一行:
CPP
st[i] = 1.0 * s[i].d + (((v1 * v1 * 1.0) - (s[i].v * s[i].v)) / (2.0 * s[i].a));
代码中数组和变量均为double类型,但是当我用int/long long类型运行的时候就正常,只是有精度误差,但是当上述代码运行时,却出现了很离谱的数。使我t2炸了。这是为什么?附上我int类型的代码:
CPP
st[i] = s[i].d + (((v1 * v1) - (s[i].v * s[i].v)) / (2 * s[i].a));
另外,在很多数学题都很容易遇到精度误差,有没有办法可以避免这种精度误差?

回复

3 条回复,欢迎继续交流。

正在加载回复...