提问人:Ian Stewart 提问时间:8/10/2022 最后编辑:UselessIan Stewart 更新时间:8/10/2022 访问量:130
bc 精确到小数点后几位?
To how many decimal places is bc accurate?
问:
可以将平方根打印到几百位小数位,就像在 C 中一样。但是,在 C 中,它只能精确到 15。我已经检查了 2 到 50 位小数的平方根,它是准确的,但限制是什么?我找不到任何关于此的参考资料。bc
bc
答:
4赞
Useless
8/10/2022
#1
bc 精确到小数点后几位?
bc
是一个任意精度计算器。任意精度只是告诉我们它可以表示多少位数字(只要内存中可以容纳多少位数字),但并没有告诉我们任何关于准确性的信息。
但是,在 C 语言中,它只能精确到 15
C 使用处理器的内置浮点硬件。这很快,但有固定的位数来表示每个数字,所以显然是固定的,而不是任意的精度。
任何任意精度系统都会有更多的......精度比这要高,但当然可能仍然不准确。知道可以存储多少位数字并不能告诉我们它们是否正确。
然而,GNU的实现是开源的,所以我们只能看到它做了什么。bc
该函数使用迭代近似(牛顿的方法,尽管至少在公元前 1,000 年巴比伦人显然知道相同的技术)。bc_sqrt
这种近似值只是运行,每次都会改进,直到两次连续猜测的差异小于请求的精度。也就是说,如果您要求 1,000 位数字,它会一直持续下去,直到差异最多在第 1,001 位。
唯一的例外是当您要求提供 N 位结果并且原始数字超过 N 位时。它将使用两者中的较大者作为其目标精度。
由于该算法的收敛速度在每次迭代中快于一位数字,因此两次连续迭代同意某些 N 位数字而又不符合 N 位数字的风险似乎很小。
评论
bc
bc