如何防止 python 中的舍入

How to prevent rounding in python

假设如果一个变量有一个浮点值,如果我用另一个浮点值重新分配同一个变量,它会根据第一个值中的小数部分的编号舍入该值的小数部分,如何我能阻止吗 例如:

wav=10.456878798
print wav
wav=10.555546877796546
print wav
10.456878798
10.5555468778

问题不在于 Python。请参阅 print 语句打印分数的 10 位小数,即使它有更多。只需检查 python shell 中的变量,它就会为您提供完整的值。

>>> wav = 10.232483243243243
>>> print wav
10.2324832432
>>> wav
10.232483243243243

您可以执行以下操作并设置精度:

$ cat test.py
a = 10.456878798
print "{0:.2f}".format(a)
a = 10.555546877796546
print "{0:.15f}".format(a)

以上将打印你:

$ python test.py
10.46
10.555546877796546

希望对您有所帮助。

None 提供的解决方案有效。所以我决定搜索标准库并找到一个非常有用的公式。为此,您需要从标准库中导入 decimal 并定义小数部分的精度,如下所示。这样你的小数部分就有28位了!

from decimal import *
getcontext().prec = 28

之后在pythonshell中,你会发现如下:

Decimal(1) / Decimal(7)

Decimal('0.1428571428571428571428571429')