gpt4 book ai didi

python - 测量浮点结果精确到小数点后 N 位的精度

转载 作者:行者123 更新时间:2023-11-30 22:48:20 25 4
gpt4 key购买 nike

我正在 python(64 位操作系统)中测试 Pi 的一些实现,并且有兴趣测量答案的准确性(有多少小数位是正确的?)以增加迭代。我不想比较超过 15 位小数,因为超出此范围浮点表示本身就不准确。

例如对于低迭代次数,我得到的答案是

>>> x
3.140638056205993

我想与 math.pi 进行比较

>>> math.pi
3.141592653589793

对于上述问题,我希望我的答案是 3(小数点后第三位是错误的)我的做法是:

>>> p = str('%.51f' % math.pi)
>>> q = str('%.51f' % x)
>>> for i,(a,b) in enumerate(zip(p,q)):
... if a != b:
... break

上面的内容对我来说看起来很笨拙,即将浮点转换为字符串,然后逐个字符进行比较,是否有更好的方法来做到这一点,说更多Pythonic或使用原始浮点值本身?

顺便说一句,我找到了 math.frexp,可以用它来做这个吗?

>>> math.frexp(x)
(0.7851595140514982, 2)

最佳答案

您可以计算两者之间差异的对数

>>> val = 3.140638056205993
>>> epsilon = abs(val - math.pi)
>>> abs(int(math.log(epsilon, 10))) + 1
3

本质上,您要找出 10 的哪个次方才能等于两个数字之间的差。仅当两个数字之差小于 1 时,此方法才有效。

关于python - 测量浮点结果精确到小数点后 N 位的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40199363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com