Heim > Backend-Entwicklung > Golang > Warum gibt die Divisionsoperation (/) von Go manchmal 0 statt einer Dezimalzahl zurück?

Warum gibt die Divisionsoperation (/) von Go manchmal 0 statt einer Dezimalzahl zurück?

DDD
Freigeben: 2024-12-11 15:17:09
Original
346 Leute haben es durchsucht

Why Does Go's Division Operation (/) Sometimes Return 0 Instead of a Decimal?

Divisionsoperation in Go

In Go wird die Divisionsoperation (/) je nach Art ihrer Operanden unterschiedlich ausgeführt. Um zu verstehen, warum der Ausdruck fmt.Println(3 / 10) zu 0 statt zu 0,3 führt, schauen wir uns das Typsystem von Go genauer an.

Die Operanden in diesem Ausdruck sind untypisierte Ganzzahlkonstanten und laut Go Gemäß der Sprachspezifikation wird das Ergebnis arithmetischer Operationen mit untypisierten Konstanten durch die Reihenfolge bestimmt, in der die Typen auftreten. Ganzzahlkonstanten stehen vor Gleitkommakonstanten, daher wird der Ausdruck als ganzzahlige Division ausgewertet, was zu 0 führt.

Um ein Gleitkommaergebnis zu erhalten, muss mindestens einer der Operanden eine Gleitkommakonstante sein. Um dies zu erreichen, kann man 3.0 / 10.0, 3.0 / 10 oder 3 / 10.0 schreiben. Die ersten beiden Ausdrücke verwenden untypisierte Gleitkommakonstanten, während der letzte Ausdruck die Ganzzahlkonstante 3 in einen float64 umwandelt.

Wenn außerdem ein Operand eine untypisierte Konstante hat und der andere ein typisierter Operand ist, wird der Typ von Der Ausdruck wird durch den typisierten Operanden bestimmt. Daher können var i3 = 3 und var i10 = 10 mit fmt.Println(float64(i3) / float64(i10)) in float64 konvertiert werden.

Beachten Sie, dass numerische Literale wie 10.0 untypisierte Gleitkommakonstanten sind und Ausdrücke wie i3 / 10.0 und 3.0 / i10 würden aufgrund der immer noch als Ganzzahldivision ausgewertet typisierter Operand (i3 und i10), der den Ergebnistyp bestimmt.

Das obige ist der detaillierte Inhalt vonWarum gibt die Divisionsoperation (/) von Go manchmal 0 statt einer Dezimalzahl zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage