如何解决Python路由浮点数与十进制模块一起工作,但是在随后使用列表中的值时不起作用
我知道有很多类似的问题,但是我无法在其中任何一个中找到解决方案。 我将浮点数舍入为2个十进制数字,并且为此目的使用了十进制模块-到目前为止在许多其他线程中都可以找到。 这很好用。
from __future__ import print_function #Working in IronPython2
from decimal import *
def ToDecimal(value,digits):
getcontext().prec = digits
value = round(value,ndigits=digits)
return float(Decimal(str(value)))
a = 94.0478601564
b = 117.881296226
d = ToDecimal(a,2)
e = ToDecimal(b,2)
print (d)
print (e)
lst = [d,e]
print (lst)
这将导致以下输出:
94.05
117.88
[94.049999999999997,117.88]
因此,十进制模块可以很好地工作,但是当我使用这些值创建列表时,它们只会导致我试图避免的相同浮点问题。
我对如何使用十进制模块根本上是错误的理解,或者是由于再次将其转换为浮点数引起的?
预先感谢, T。
解决方法
如果实际上删除了十进制函数,则将获得所需的输出。我运行了一个示例(将getcontext()删除,因为它未在代码段中定义),并删除了十进制函数。这样,代码又回来了
def ToDecimal(value,digits):
value = round(value,ndigits=digits)
return float(str(value))
a = 94.0478601564
b = 117.881296226
d = ToDecimal(a,2)
e = ToDecimal(b,2)
print (d)
print (e)
lst = [d,e]
print (lst)
运行此命令,您将获得输出... 94.05 ... 117.88 ... [94.05,117.88] [屏幕截图1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。