2

如果我们假设变量xy可以用双精度表示而没有错误。写x^2 - y^2还是(x + y)(x-y)会更好?数字的双精度

我想到了这个问题,并认为x^2 - y^2应该更准确,因为某些数字根源的不和谐性。 (sqrt(numbers)

我真的很感谢你的回答!

+0

请看看这篇文章:http://dhruba.name/2012/09/01/performance-pattern-multiplication-is-20x-faster-than-math-pow/它比较Math.pow的性能与乘以 –

+2

@AlexAdas问题不在于性能,而在于准确性。 – Kayaman

回答

4

加倍和加倍减法是有问题的,只要它们的幅度差别很大。假设你有10位十进制数字的精度,并希望

1234567890 + 0.05 

那么除了得到它错了,因为尾数不能代表另外05.(实际上,64 IEEE双打,精度更像是15或16张十进制数)

由此我们可以conlude表单(x+y)(x-y)应该做的更好,因为我们有一个大x和小(< 1)Y,X 2的大小相同的情况下和Y 2将变得更更大,减法的准确结果甚至不太可能。