当对结果使用近似值时(例如,当计算根或者除以一些限制时),是否有办法知道近似值何时与许多数字中的确切结果(使其成为有效数字)相匹配而不知道确切的数值结果?是否有可能输出15个重要小数的结果而不计算确切的结果?
我正在处理的具体问题是使用牛顿方法仅使用除2(bitshift)的C++近似a/b。近似值必须精确到十五的十进制数。但是我无法知道b!= 2的a/b的确切结果,还是我错了?
感谢您的所有答案。
当对结果使用近似值时(例如,当计算根或者除以一些限制时),是否有办法知道近似值何时与许多数字中的确切结果(使其成为有效数字)相匹配而不知道确切的数值结果?是否有可能输出15个重要小数的结果而不计算确切的结果?
我正在处理的具体问题是使用牛顿方法仅使用除2(bitshift)的C++近似a/b。近似值必须精确到十五的十进制数。但是我无法知道b!= 2的a/b的确切结果,还是我错了?
感谢您的所有答案。
求解方程的任何可靠方法都涉及到计算包含根的范围,每次迭代的范围越窄。当范围变得足够窄时停止 - 在您的示例中,低于1e-15
。
牛顿并没有使用范围,但我无法想象你将如何使用牛顿除以2。
您好@Eugene, a/b可以用牛顿法只用乘法,加法和减法来计算,但是对于乘法,使用Karatsuba的算法,其中采用了除法。 –
你是如何试图代表值?作为固定的小数点或“双”值。在后一种情况下阅读[浮点数学是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)。 –
@πάνταῥεῖ,我正在使用'double'值,但是这怎么回答我的问题?仅仅使用'double'类型就足够了,因为它保证了15个小数点匹配? –
你能分享你当前的代码吗? –