为了好玩,我尝试使用任意精度浮点库实现Chudnovsky算法来计算java中的pi。令我印象深刻的是,我需要计算数字1 / n的倒数,因为公式被描述为1 / pi = sum(...)
为了使1 / n具有所需的精度,需要浮点数n需要多少有效位数/位数?对此有一个简单的答案吗?我尝试进行一些计算,如1 / 0.100009999999 = 9.99900010009,以确定0.1的倒数,小数点后面有五个正确的数字。我看到如果我取小数点后的前三位数,并对结果进行四舍五入得到正确的值10,但是在1 / n运算后有多少位数正确的一般规则?我也对相同的结果感兴趣,但是在二进制和十六进制的基础上。
尝试使用Google搜索和快速搜索Stackoverflow,但没有找到任何先前的答案。如果存在重复,则道歉。
答案 0 :(得分:1)
你想计算1 / x,但计算1 /(x + d),d = delta x截断误差。通过二项式定理,
1/(x+d) = (x-d)/(x²-d²)
由于我们可以假设d²远低于任何浮点误差,因此倒数误差为-d /x²,相关误差相关误差为-d / x。
这确认了Artur Biesiadowski的评论,如果1 / x介于1和10之间,则在最坏的情况下误差放大倍数为10倍。