Python如何处理非常小的数字

Python如何处理非常小的数字,python,python-2.7,numpy,Python,Python 2.7,Numpy,我正在比较两本字典中的数字(总比较量约为1M)。以下是一段代码片段: for i in dict1: val1 = dict[i] val2 = dict2[i] if (val1 != 0.000): perctg_diff = (val1 - val2)/val1 * 100 if perctg_diff > 3.0: dict3.update({i:(val1,val2,perctg_diff)})

我正在比较两本字典中的数字(总比较量约为1M)。以下是一段代码片段:

for i in dict1:
    val1 = dict[i]
    val2 = dict2[i]

    if (val1 != 0.000):
        perctg_diff = (val1 - val2)/val1 * 100
        if perctg_diff > 3.0:
            dict3.update({i:(val1,val2,perctg_diff)})
    if (val2 !=0.000):
        perctg_diff = (val2 - val1)/val2 * 100
        if perctg_diff > 3.0:
            dict3.update({i:(val1,val2,perctg_diff)})
我发现了百分比差异,并将超过3%的差异写入
dict3
。执行脚本后,我发现
dict3
中的一些数字是

(1052712, (2.88541545330242e-33, 2.3194405728563e-27, 99.9998755986471))
(1052713, (8.1367737331018e-34, 7.83224080670401e-31, 99.8961118033279))
(1052715, (1.79168848952333e-33, 6.71766997709614e-31, 99.733287211841))
(1052717, (1.03397638198887e-25, 4.49948480152819e-26, 56.4836791255002))
(1400879, (0.0, 1.39114642689358e-36, 100.0))
(1290291, (0.0, 1.89369462623834e-20, 100.0))
什么是有效/高效的方法,我可以摆脱数字舍入,而忽略这些小数字时的比较

(将python 2.7与numpy结合使用)

与您想要的内容非常接近(双关语)。我评估 公式如下:


绝对(a-b)我不明白这与numpy有什么关系?可能是数字?我不明白,但可能是python中的
decimal
module或
numpy.nextafter()
可以帮助。我发现这可能是它可以帮助你的“小”是什么意思?这些百分比差异是正确的,没有数字舍入。(指数之间的差异为2或更多,因此小于100倍,因此百分比差异大于99%。)