Mathematische Unsicherheiten in Python

Hallo allerseits! Wir verwenden oft vertraute Zahlen in unseren bevorzugten Programmiersprachen. Gewohnheit ist 1, -1,5, pi oder sogar komplex. Aber NaN, + Inf, -Inf wird von uns viel seltener verwendet.

Hinweis:

In diesem Artikel verwende ich die Elementarfunktionen von Python Version 3.6.8, aber vieles wird für andere Sprachen relevant sein, zum Beispiel für JS.

In der Mathematik gibt es viele ungewisse Situationen. Dies ist beispielsweise eine Division durch 0.
Konsole eingeben

1/0 

Sie erhalten einen ZeroDivisionError-Fehler. Erwartet, sagst du? Ja Versuchen wir ein anderes Beispiel:

 0**0 

Wie Sie wissen, ist 0 hoch 0 eine klassische mathematische Unsicherheit.
Python sagt jedoch, dass dies 1 ist. Eine vernünftige Frage stellt sich:

Bild

Warum dürfen wir nicht durch 0 geteilt durch den Fuß schießen, aber sie melden das falsche Ergebnis mit solch einer unbestimmten Aktion?

Vielleicht ist gerade jemand empört und schreit, dass die Antwort einfach ist: IEEE 754. Und wenn ich mich nicht irre, haben wir uns mit seiner Hilfe darauf geeinigt, dass jede Zahl in Grad 0 1 ist.

Hier beginnt der Spaß. JavaScript unterstützt auch IEEE (0,1 + 0,2! = 0,3), aber 1/0 ist unendlich, kein Division durch 0-Fehler.

Als Ergebnis haben wir (alle Beispiele für Python):

1. Fehler, die durch falsche Aktionen verursacht wurden

Beispiele:

 1/0 # ZeroDivisionError log(0) #ValueError 

2. Geben Sie falsche Werte zurück

Ein Beispiel:

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

3. Geben Sie spezielle Werte zurück:

+ -Inf, nan

Ein Beispiel:

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

Meiner Meinung nach ist das verwirrend.

Erst heute habe ich ein interessantes PHP-Verhalten festgestellt:

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

Ich bin kategorisch gegen 2 Optionen und unterstütze wahrscheinlich 1.

Denn wie das PHP-Beispiel zeigt, müssen Sie inf und nan mit Vorsicht verwenden. Was denkst du?

Source: https://habr.com/ru/post/de454352/


All Articles