Heim >Backend-Entwicklung >Golang >Warum gibt die Go-Division 0 statt 0,3 zurück?

Warum gibt die Go-Division 0 statt 0,3 zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 14:00:13706Durchsuche

Why Does Go Division Return 0 Instead of 0.3?

Division in Go: Das 0,3-Rätsel verstehen

Beim Durchführen einer Divisionsoperation in Go kann es sein, dass Sie auf ein unerwartetes Ergebnis von 0 statt stoßen die erwarteten 0,3. Dieses eigenartige Verhalten entsteht durch die Verwendung untypisierter Konstanten in der Operation.

In Go werden die Operanden binärer Operationen zunächst als untypisierte Konstanten behandelt. Der resultierende Typ der Operation wird durch die Operanden anhand einer bestimmten Rangfolge bestimmt. Bei ganzzahligen Konstanten wie 3 und 10 ist das Ergebnis eine untypisierte Ganzzahl, also 0.

Um ein Gleitkomma-Ergebnis zu erhalten, muss man sicherstellen, dass mindestens ein Operand eine Gleitkomma-Konstante ist. Durch die Verwendung einer expliziten Typkonvertierung, wie in den folgenden Ausdrücken dargestellt, können Sie die gewünschte Genauigkeit erreichen:

  • 3.0 / 10.0
  • 3.0 / 10
  • 3 / 10.0

Alternativ können Sie die ganzzahligen Operanden in float64 konvertieren explizit:

  • float64(i3) / 10
  • 3 / float64(i10)

Diese Änderungen erzwingen, dass die Operation Gleitkommaarithmetik verwendet. was das beabsichtigte Ergebnis von 0,3 ergibt.

Daher bei der Durchführung Achten Sie beim Ausführen arithmetischer Operationen in Go auf die Art der verwendeten Konstanten. Um dieses spezielle Problem bei der Division zu vermeiden, stellen Sie sicher, dass Ihre Operanden entweder explizite Gleitkommakonstanten sind oder einer expliziten Typkonvertierung in float64 unterzogen werden.

Das obige ist der detaillierte Inhalt vonWarum gibt die Go-Division 0 statt 0,3 zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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