Python读取非常小的十进制数

时间:2013-11-22 20:43:41

标签: python

我的程序读取带有数字的文件并将其存储在数组中。

一个值,比如说X是0.0000001

dataset2d = [[float(digit) for digit in line.strip().split()] for line in file]
Y= dataset2d[0][2] #(fixed position in file)
C = 0.5 * math.log((A+ Y)/(B+ Y))  #This gives divide by zero error. B can be 0 though.

我将值存储在float数组中。 当我打印数组时,X值将在控制台上显示为1e-07 现在当我将它存储到一个变量说Y,然后用Y除以一个数字时,我得到除零误差。

我想使用这个数是除数,因此为了避免除零误差,我想要实际值而不是近似值。

我如何在Python中执行此操作?也就是说,在我的数组中正确读取和存储非常小的X值。

注意:如果我使用十进制,我可以为整个数组执行此操作吗?或者仅仅是因为这个值在同一个地方?

2 个答案:

答案 0 :(得分:1)

你需要使用Python十进制模块:http://docs.python.org/2/library/decimal.html你可以将它用于你的整个数组。至于如何使用它,请参阅链接。 :)

答案 1 :(得分:-1)

正如您在笔记中提到的,我建议使用十进制模块。在这种情况下,一定要将它用于所有值。只是为了证明原因:

>>> from decimal import Decimal as D
>>> x = D(".01")
>>> 0.3/x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'float' and 'decimal.Decimal'