为什么 Python (3.10.2) 错误地划分了极大/极小的数字?[复制]

Why does Python (3.10.2) divide extremely large/small numbers incorrectly? [duplicate]

提问人:fartlord 提问时间:4/8/2022 更新时间:4/8/2022 访问量:145

问:

所以我是编程新手,目前正在尝试制作一个程序来计算特定波长或频率(光电效应)从金属发射的光子量。该程序旨在使用电磁波频率的计算,这就是为什么我试图定义一个函数,通过与 c/λ 的简单除法,可以计算频率。然而,当我尝试这样做时,Python 给了我答案,结果是 10^1。为什么会这样?插入的值应该是正确的,即使是我的编程老师也找不到代码中的任何错误。

顺便说一句,这是我的代码。我在计划复制到我的主 .py 文档的测试文件中进行了此操作:

a = 550 #nm
c = 299792458 #m/s

b = a*(10**-9) #meter

print(b)
print(c)

d = c/b

print(d)

这是我得到的输出(实际频率应该在 54 077 200 000 000 左右(在谷歌计算器上计算):

5.5e-07
299792458.0
545 077 196 363 636.3

正如你所看到的,答案是 10^1。如何解决此问题?

python-3.x 精度

评论

0赞 Amadan 4/8/2022
通过使用 ,您已经进入了浮点数的领域。如果用 替换 ,你会得到类似的东西。**-910decimal.Decimal(10)545077196363636.3636363636364
0赞 furas 4/8/2022
float无法保留所有值,因此它只保留近似值。显示,你会得到.大多数语言都有这个问题。您可能需要使用模块f'{10**-9:.54f}0.000000001000000000000000062281591457779856418897068693decimal

答: 暂无答案