Wofür braucht man überhaupt Infinity in JavaScript, Beispiele?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das ist nicht nur bei JavaScript / ECMAScript so, sondern überall dort, wo man sich an den Standard IEEE 754 hält (und an etlichen weiteren Stellen). Wie Unendlichkeiten und nichtdefinierbare Ausdrücke ("NaN") behandelt werden hat man so festgelegt, wie es sich in der Praxis am besten bewährt hat.

+unendlich ist eine Pseudozahl, die größer ist als jede reelle Zahl. -unendlich ist eine Pseudozahl, die kleiner ist als jede reelle Zahl.

Wenn man mit +unendlich und -unendlich rechnen will muss man definieren: für jede reelle Zahl r ist

+unendlich + r = +unendlich

-unendlich + r = -unendlich

(und - weil -r ebenfalls eine reelle Zahl ist -

+unendlich - r = +unendlich

-unendlich - r = -unendlich

)

sowie

wenn r > 0 ist, ist

(+unendlich) * r = r * (+unendlich) = +unendlich

(-unendlich) * r = r * (-unendlich) = -unendlich

also auch

(+unendlich) + (+unendlich) = 2 * (+unendlich) = +unendlich

Entsprechend für r < 0, hier kehrt sich das Vorzeichen der Unendlichkeit um:

(+unendlich) * r = -unendlich

usw.

Leider gibt es keine sinnvolle Möglichkeit, Ausdrücke wie

0 * (+unendlich)

(-unendlich) * 0

(+unendlich) + (-unendlich)

(+unendlich) / (+unendlich)

so zu definieren, dass man damit rechnen kann, ohne auf Widersprüche zu stoßen.

Deshalb hat man hierfür einen eigenen Ausdruck für "irgendwie aus dem Bereich der Zahlen, aber eben doch keine Zahl" definiert, "NaN" ("Not a Number", ungefähr übersetzbar mit "keine Zahl").

Woher ich das weiß:Hobby – Hobby, Studium, gebe Nachhilfe
indexhtml 
Fragesteller
 03.06.2022, 17:52

Hab zwar nichts verstanden weil ich kein Mathe kann aber ich glaub dir mal xD

0
PWolff  03.06.2022, 18:52
@indexhtml

Kannst auch damit rumspielen, JavaScript dürfte sich hier genau an die IEEE-Standards halten.

1

Ich finde es z.B. praktisch, wenn man ein Maximum oder Minimum sucht. Dann kann man eine Variable mit Infinity initialisieren. Wenn man was kleineres findet, aktualisiert man diese Variable. Wenn man ein Array gegeben hat, kann man natürlich auch Math.min(...[myArray]) verwenden. Bei einem leeren Array wird auch Infinity ausgegeben.

Mit Infinity kann man auch erkennen, dass mit zu großen Zahlen gerechnet wird oder 1/0 oder Math.log(0) oder ähnliches. Solche Fehler kann man dann unterscheiden von anderen, wo NaN ausgegeben wird.

Unendlich ist keine Zahl sondern ergibt sich immer als Grenzwert irgendeiner Funktion. Zum Beispiel f(x)=x² strebt für x gegen unendlich auch gegen unendlich, oder auch f(x)=x⁶ strebt gegen unendlich, wenn x gegen unendlich strebt.

Wenn wir nun zum Beispiel "unendlich - unendlich" aufsetzen als Grenzwert von x² - x⁶, dann kommt hier minus unendlich heraus, denn x⁶ strebt schneller gegen unendlich als x², man zieht also quasi die "größere" Unendlichkeit von der "kleineren" ab.

Wenn wir umgekehrt x⁶ - x² anschauen, kommt unendlich raus, aus demselben Grund.

Wenn wir zum Beispiel f(x)=x²+42 nehmen und g(x)=x², dann streben beide einzeln gegen unendlich, ihre Differenz aber, also x²+42 - x², strebt gegen 42, denn die Terme, die gegen unendlich streben, heben sich weg.

So kann man also jedes beliebige Ergebnis bekommen, wenn man zwei Terme, die beide gegen unendlich streben, voneinander abzieht.

Woher ich das weiß:Studium / Ausbildung – Masterabschluss Theoretische Physik

Unendlich ist keine klar definierte Zahl, weshalb man nicht unendlich von unendlich subtrahieren kann. Addieren kann man es dagegen schon, da dort auf jeden Fall auch wieder unendlich rauskommt. Genauso kann ich jede beliebige Zahl von unendlich abziehen oder addieren, es kommt trotzdem unendlich raus.

Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.
indexhtml 
Fragesteller
 27.05.2022, 17:53

Aber wofür verwendet man das jetzt in der Realität ?

0
Babelfish  27.05.2022, 17:56
@indexhtml

Das kann als Ergebnis bei bestimmten Funktionen rauskommen, wenn das Ergebnis den Wertebereich überschreitet. Beispiel:

console.log(Math.pow(10, 1000));
1

Der Standard ist Gesetz >:(

Respektiert den Standard. Das muss hier alles seine Ordnung haben!!

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops