2016-11-30 35 views
-1

当对结果使用近似值时(例如,当计算根或者除以一些限制时),是否有办法知道近似值何时与许多数字中的确切结果(使其成为有效数字)相匹配而不知道确切的数值结果?是否有可能输出15个重要小数的结果而不计算确切的结果?

我正在处理的具体问题是使用牛顿方法仅使用除2(bitshift)的C++近似a/b。近似值必须精确到十五的十进制数。但是我无法知道b!= 2的a/b的确切结果,还是我错了?

感谢您的所有答案。

+1

你是如何试图代表值?作为固定的小数点或“双”值。在后一种情况下阅读[浮点数学是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)。 –

+0

@πάνταῥεῖ,我正在使用'double'值,但是这怎么回答我的问题?仅仅使用'double'类型就足够了,因为它保证了15个小数点匹配? –

+0

你能分享你当前的代码吗? –

回答

0

求解方程的任何可靠方法都涉及到计算包含根的范围,每次迭代的范围越窄。当范围变得足够窄时停止 - 在您的示例中,低于1e-15

牛顿并没有使用范围,但我无法想象你将如何使用牛顿除以2。

+0

您好@Eugene, a/b可以用牛顿法只用乘法,加法和减法来计算,但是对于乘法,使用Karatsuba的算法,其中采用了除法。 –