首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中获得精确的浮点值?

问如何在python中获得精确的浮点值?
EN

Stack Overflow用户
提问于 2018-06-25 07:24:53
回答 2查看 5.6K关注 0票数 1

我有一个浮点数的列表。我需要对这些数字执行某些加法和乘法运算,而代码的逻辑需要精确的答案(例如,与同一列表中的其他数字进行比较)。但它并没有给出精确的answer.The搜索方法来解决类似的问题,建议使用十进制类。同样的问题依然存在。下面是一个例子:

代码语言:javascript
复制
from decimal import Decimal
Decimal(1.2)*Decimal(2)
Decimal('2.399999999999999911182158030')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-25 08:25:01

问题是,Decimal(1.2)使用1.2的浮点值,而您想要的是确切的值。使用字符串来使用确切的值并获得所需的结果:

代码语言:javascript
复制
>>> from decimal import Decimal
>>> Decimal(1.2)
Decimal('1.1999999999999999555910790149937383830547332763671875')
>>> Decimal("1.2")
Decimal('1.2')
>>> Decimal("1.2")*Decimal("2")
Decimal('2.4')
票数 4
EN

Stack Overflow用户

发布于 2018-06-25 07:38:28

如果您喜欢使用decimal模块,请相应设置您的preciscion。示例:

代码语言:javascript
复制
from decimal import Decimal
from decimal import getcontext

# your code without setting 'prec'
print('Precision :', getcontext().prec)
a = Decimal(1.2) * Decimal(2)
print('result :', a)

# setting 'prec' to 16
getcontext().prec = 16
print('Precision :', getcontext().prec)
a = Decimal(1.2) * Decimal(2)
print('result :', a)

产出:

代码语言:javascript
复制
Precision : 28
result : 2.399999999999999911182158030
Precision : 16
result : 2.400000000000000

有关更多信息,请参见十进制模块文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51018201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档