Python中的数学不确定性

大家好! 我们经常在我们最喜欢的编程语言中使用熟悉的数字。 惯性是1,-1.5,pi甚至是复数。 但是我们很少使用NaN,+ Inf,-Inf。

注意事项:

在本文中,我使用了Python版本3.6.8的基本功能,但与其他语言(例如JS)息息相关。

数学中有很多不确定的情况。 例如,这是除以0。
在控制台中键入

1/0 

您将收到ZeroDivisionError错误。 预计到了,您说什么? 是的 让我们尝试另一个示例:

 0**0 

如您所知,从0到0的幂是经典的数学不确定性。
但是,Python表示这是1。一个合理的问题出现了:

图片

为什么不允许我们“用脚踢”除以0,却用这种不确定的动作报告错误的结果?

也许有人现在很愤慨,并大声喊出答案很简单:IEEE754。如果我没记错的话,正是在他的帮助下,我们同意0度中的任何数字都是1。

这就是乐趣的开始。 JavaScript还支持IEEE(0.1 + 0.2!= 0.3),但其中的1/0是无穷大,不是除以0的除法错误。

结果,我们有了(python的所有示例):

1.错误动作引起的错误

范例:

 1/0 # ZeroDivisionError log(0) #ValueError 

2.返回不正确的值

一个例子:

 0**0 #1 1**inf #1.0 

3.返回特殊值:

+ -Inf,南

一个例子:

 inf=float('inf') inf-inf #nan 

我认为这令人困惑。

就在今天,我注意到了一个有趣的PHP行为:

 var_dump(mt_rand(INF,INF)); //  INF  INF - NULL?? //        false. 

我坚决反对2个选择,并且可能会支持1个。

因为,如PHP示例所示,您需要谨慎使用inf和nan。 你觉得呢

Source: https://habr.com/ru/post/zh-CN454352/


All Articles