我在这些操作中使用 float :
这两者哪个更精确?
- (a * b)/c
或
- (a/c) * b
这到底重要还是要视情况而定?如果可以,在什么情况下应该选择哪个?
最佳答案
真的,如果你不使用 double 那么你就被误导了,你不关心精度。
否则,如果第一个结果略低于下一个更高的 2 次幂,您将获得最佳误差范围。比如计算(pi * e)/sqrt(2),你通过计算(e/sqrt(2)) * pi 得到最佳误差界,因为e/sqrt(2) ≈ 1.922 接近2以下。 结果关闭两个的下一个更高的幂具有更低的相对误差。
对于大量项的加减法,最好先减去大小相等、符号相反的项(如果y/2 ≤ x ≤ 2y 则精确计算x - y ),否则组合数字给出最小的可能的结果。
关于c++ - 最大化精度的操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45524072/