我是Python编程方面的新手,最近我一直在学习数据类型的一些方面。在我阅读时,方法decimal.Decimal()创建了一个十进制对象;decimal.Decimal.from_float()方法从一个浮点对象创建了一个十进制对象。然而,两者产生的产出是相同的:
>>> import decimal
>>> x = 3.14561
>>> y = 3.14561
>>> x = decimal.Decimal.from_float(x)
>>> y = decimal.Decimal(y)
>>> x == y
True那么,两者有什么区别呢?
发布于 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.。
发布于 2014-02-09 19:35:44
根据Python3文档,
Note: From Python 2.7 onwards, a Decimal instance can also be constructed directly from a float.所以只要你运行的是Python 2.7+,什么都没有。
https://stackoverflow.com/questions/21663881
复制相似问题