首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Decimal.Decimal(浮点)与decimal.Decimal.from_float(浮点)

Decimal.Decimal(浮点)与decimal.Decimal.from_float(浮点)
EN

Stack Overflow用户
提问于 2014-02-09 19:32:17
回答 2查看 749关注 0票数 2

我是Python编程方面的新手,最近我一直在学习数据类型的一些方面。在我阅读时,方法decimal.Decimal()创建了一个十进制对象;decimal.Decimal.from_float()方法从一个浮点对象创建了一个十进制对象。然而,两者产生的产出是相同的:

代码语言:javascript
复制
>>> import decimal
>>> x = 3.14561
>>> y = 3.14561
>>> x = decimal.Decimal.from_float(x)
>>> y = decimal.Decimal(y)
>>> x == y

True

那么,两者有什么区别呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-09 19:35:50

看看这些文档,在Python2.7之前,Decimal()构造函数不能接受浮点参数,这就是为什么需要from_float()类方法的原因。

从2.7开始,构造函数也可以直接接受浮点数,因此两者是相同的。

不过,从文档中,我认为最初不允许使用float构造的原因是:

注: Decimal.from_float(0.1)与十进制(‘0.1’)不一样。由于0.1在二进制浮点中不能完全表示,所以该值被存储为最近的可表示值,即0x1.999999999999ap-4。十进制中的等价值是0.1000000000000000055511151231257827021181583404541015625.。

票数 3
EN

Stack Overflow用户

发布于 2014-02-09 19:35:44

根据Python3文档

代码语言:javascript
复制
Note: From Python 2.7 onwards, a Decimal instance can also be constructed directly from a float.

所以只要你运行的是Python 2.7+,什么都没有。

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

https://stackoverflow.com/questions/21663881

复制
相关文章

相似问题

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