Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何评估两个数字是否足够接近?_Python_Python 3.x_Floating Point_Floating Point Comparison - Fatal编程技术网

在Python中,如何评估两个数字是否足够接近?

在Python中,如何评估两个数字是否足够接近?,python,python-3.x,floating-point,floating-point-comparison,Python,Python 3.x,Floating Point,Floating Point Comparison,我有两个号码- 3.125000兆字节和2.954880兆字节 我想对它们进行比较,结果应该是真的,因为它们几乎是3兆字节。在Python3中我如何做到这一点 我试着做数学。isclose3.125000,2.954880,abs_tol=0.1 但是,返回False。我真的不明白怎么把宽容放在这里 math.isclose(3.125000,2.954880, abs_tol=0.1). 我正在使用Python 3.5.2 预期结果是正确的。 实际结果是假的。< P>你的绝对公差设置为0

我有两个号码-

3.125000兆字节和2.954880兆字节

我想对它们进行比较,结果应该是真的,因为它们几乎是3兆字节。在Python3中我如何做到这一点

我试着做数学。isclose3.125000,2.954880,abs_tol=0.1

但是,返回False。我真的不明白怎么把宽容放在这里

math.isclose(3.125000,2.954880,  abs_tol=0.1). 
我正在使用Python 3.5.2

预期结果是正确的。
实际结果是假的。

< P>你的绝对公差设置为0.1,所以差值必须小于0.1,以考虑它们相等;3.125000-2.954880四舍五入为0.17012,这太大了

如果您想让他们被认为是接近的,请稍微增加您的容忍度,例如:

math.isclose(3.125000, 2.954880, abs_tol=0.2)

根据您的期望返回true。

您的绝对公差设置为0.1,因此差值必须小于0.1,以考虑它们相等;3.125000-2.954880四舍五入为0.17012,这太大了

如果您想让他们被认为是接近的,请稍微增加您的容忍度,例如:

math.isclose(3.125000, 2.954880, abs_tol=0.2)
函数math.isclose实际上是用来处理浮点不精确性的。您可以将其用于此目的,但需要对其进行适当调整:示例中的数字之间的间隔大于0.1

如果您不担心浮点不精确性,比较它们的更好方法是显而易见的:

def equivalent(a, b):
    return abs(a-b) < 0.1
函数math.isclose实际上用于处理浮点不精确性。您可以将其用于此目的,但需要对其进行适当调整:示例中的数字之间的间隔大于0.1

如果您不担心浮点不精确性,比较它们的更好方法是显而易见的:

def equivalent(a, b):
    return abs(a-b) < 0.1

它同时使用这两种方法,但如果满足任一阈值,则认为接近;通过0.1的绝对值大致相当于您所写的值,但也会使真正巨大的数字与较小的相对差异被视为接近。@ShadowRanger Yep,当我看到您的答案时意识到了我的错误。编辑以避免误导OP。它使用两者,但如果满足任一阈值,则视为接近;通过0.1的绝对值大致相当于您所写的值,但也会使真正巨大的数字与较小的相对差异被视为接近。@ShadowRanger Yep,当我看到您的答案时意识到了我的错误。编辑以避免误导OP。差值大于0.1,因此不够接近。差值大于0.1,因此不够接近。