浮点数的完整小数位数

时间:2015-04-03 02:21:42

标签: python

如何在Python 2.7中存储带有完整小数位的浮点数?

例如:

x = 1.0/3 

然后x应该是0.333...但是Python只存储到小数点后15位(如果我没有错)。

但是,我希望以小数位永不结束的方式存储0.33333(保留整个小数位)。

3 个答案:

答案 0 :(得分:3)

如果您坚持使用非符号编码方案,那么总是是您无法在无限存储空间中表示的数字。

对于您的示例1/3,您不能仅仅因为三分球永远不会结束而将其表示为0.3333...。对于该特定示例,您可以使用合理方案,例如分数(具有分子和分母的数字)。

然而,这对于像2的平方根或π这样的非理性无济于事。符号编码将数字保留为原始形式,而不是试图将其强制转换为1.414 ir 3.14159,使用这些编码的系统通常会理解如何操纵这些符号。

例如,plug e(i×pi) into Wolfram Alpha,您获得-1

如果您坚持或仅限于非符号方案,您只需接受将存在您无法准确表示的数字。 “解决方案”应具有足够的精度,以使错误不会累积到可见的位置。

答案 1 :(得分:0)

使用decimal模块。由于二进制表示的不精确性,它没有浮点舍入误差,您可以将精度设置为您需要的大小(理论上无穷大)。

答案 2 :(得分:-2)

您应该使用函数round

>>> x = 1.0/3
>>> x
0.3333333333333333
>>> y = round(x, 5)
>>> y
0.33333