Division in Go verstehen
Im Gegensatz zu anderen Programmiersprachen, die automatisch eine Gleitkomma-Division durchführen, erfordert Go für die Division eine explizite Konvertierung in Gleitkomma Operationen. Dies kann bei der Arbeit mit ganzen Zahlen zu unerwarteten Ergebnissen führen.
Bedenken Sie den folgenden Code:
fmt.Println(3 / 10)
Dadurch wird 0 anstelle der erwarteten 0,3 ausgegeben. Der Grund dafür ist, dass die Operanden 3 und 10 beide untypisierte Ganzzahlkonstanten sind. Gemäß der Go-Sprachspezifikation verwenden die Operation und das Ergebnis den Typ, der später in der Liste erscheint, wenn es sich bei den Operanden einer Binäroperation um unterschiedliche Arten untypisierter Konstanten handelt: Ganzzahl, Rune, Gleitkomma, komplex. In diesem Fall steht die Ganzzahl vor der Gleitkommazahl, sodass das Ergebnis eine untypisierte Ganzzahl (0) ist.
Um ein Gleitkommaergebnis zu erhalten, muss einer der Operanden eine Gleitkommakonstante sein. Bedenken Sie Folgendes:
fmt.Println(3.0 / 10.0) fmt.Println(3.0 / 10) fmt.Println(3 / 10.0)
Alle diese Ausdrücke ergeben die untypisierte Gleitkommakonstante 0,3. Indem wir einem Operanden eine .0 hinzufügen, wandeln wir ihn explizit in einen Gleitkommawert um, was zu einem Gleitkommaergebnis führt.
Wenn die Divisionsoperation einen typisierten Operanden umfasst, bestimmt der Typ des typisierten Operanden die Typ des Ausdrucks. Um ein float64-Ergebnis sicherzustellen, sollte der typisierte Operand float64 sein. Zum Beispiel:
var i3 = 3 var i10 = 10 fmt.Println(float64(i3) / 10) fmt.Println(3 / float64(i10))
Diese Ausdrücke konvertieren die int-Variablen in float64, was zu einem float64-Ergebnis von 0,3 führt.
Es ist wichtig zu beachten, dass numerische Literale wie 10.0 und 3.0 untypisierte Gleitkommazahlen sind -point-Konstanten, nicht float64. Ausdrücke wie i3 / 10.0 und 3.0 / i10 führen weiterhin zu einer Ganzzahl 0, da der typisierte Operand (i3 und i10) den Typ des Ergebnisses bestimmt.
Das obige ist der detaillierte Inhalt vonWie geht Go mit der Ganzzahldivision um und wie kann ich Gleitkommaergebnisse sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!