Unerwartete Null in der Teilung: Eine häufige Falle
unerwartete Nullen aus Divisionsberechnungen sind eine häufige Quelle für Programmierfehler. Untersuchen wir ein gemeinsames Szenario, um zu verstehen, warum dies geschieht.
Das Problem:
Betrachten Sie diesen Code:
decimal share = (18 / 58) * 100;
Das Ergebnis dieser Abteilung ist überraschend Null.
Die Lösung:
Die Grundursache ist eine ganzzahlige Abteilung. Bei der Trennung von Ganzzahlen wird das Ergebnis abgeschnitten (der fraktionelle Teil wird verworfen), was zu einem Gesamtnummernergebnis führt. In diesem Fall ist 18 durch 58 unter 1 1 beträgt, so dass es auf 0 abgeschnitten ist.
Um dies zu korrigieren, müssen wir explizit Dezimalwerte verwenden:
decimal share = (18m / 58m) * 100m;
Das m
-Suffix bezeichnet jede Zahl als Dezimalwörtler, wodurch die schwimmende Punkte und ein präzises Ergebnis ungleich Null gewährleistet wird. Dadurch wird die Berechnung gezwungen, die Floating-Punkt-Arithmetik zu verwenden, was die genaue fraktionale Antwort liefert.
Das obige ist der detaillierte Inhalt vonWarum führt die Integer Division zu Null?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!