我有一个函数,我在一个带有float的列表中检查一个值:
A = 0.00001
if (array [0] / array[1] < A) :
#do something
# array is a list with float64 type values and A's type is float
它会在比较中产生任何问题吗? 当我尝试打印A的值时,它显示为1e-05。为什么会这样??我是python的新手。任何人都可以解释我这个。
答案 0 :(得分:2)
比较会产生任何问题吗?
如果a[1]
等于零,或者a[0] / a[1]
大于最大可表示数字,或者小于最小可表示数字,那么您可能会遇到问题。
比较本身定义明确,几乎与您的想法完全相同。
当我尝试打印A的值时,它显示为1e-05。为什么会这样?
这取决于您如何尝试打印A
的值。考虑这些打印方式A
:
In [1]: A = 0.00001
In [2]: print A
1e-05
In [3]: print '%f'%A
0.000010
In [4]: print '%e'%A
1.000000e-05
In [5]: print '%g'%A
1e-05
正如您所看到的,每种打印方式A
都打印出不同的A文本表示。但正如10
,ten
和0xA
都代表相同的数字(我手上的手指数量),每个结果代表相同的数字(将1分成100,000个部分时得到的数字)。
答案 1 :(得分:1)
不,这不是问题。 A
默认打印为1e-05
,因为当数字非常小或非常大时,使用scientific notation显示它们会更紧凑。