如何防止 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')
假设如果一个变量有一个浮点值,如果我用另一个浮点值重新分配同一个变量,它会根据第一个值中的小数部分的编号舍入该值的小数部分,如何我能阻止吗 例如:
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')