Heim  >  Artikel  >  Backend-Entwicklung  >  Go – Verhältnis von positiven, negativen und Null-Elementen in einem Slice

Go – Verhältnis von positiven, negativen und Null-Elementen in einem Slice

王林
王林nach vorne
2024-02-06 11:15:07522Durchsuche

Go - 切片中正数、负数和零数元素的比率

Frageninhalt

Ich möchte das Verhältnis von positiven, negativen und Nullelementen in einem Slice anzeigen. Ich benötige das Verhältnis im Float32-Format. Das ist mein Code:

arr := []int32{-2, -1, 0, 1, 2}

var negativenumber, positivenumber, zeronumber, totalnumber int32
var negativeratio, positiveratio, zeroratio float32

for i := 0; i < len(arr); i++ {
    totalnumber += 1
}

for i := 0; i < len(arr); i++ {
    if arr[i] < 0 {
        negativenumber += 1
    } else if arr[i] == 0 {
        zeronumber += 1
    } else if arr[i] > 0 {
        positivenumber += 1
    }
}

negativeratio = float32(negativenumber / totalnumber)
zeroratio = float32(zeronumber / totalnumber)
positiveratio = float32(positivenumber / totalnumber)

fmt.printf("total number: %d\n", totalnumber)

fmt.printf("positive number: %d\n", positivenumber)
fmt.printf("negative number: %d\n", negativenumber)
fmt.printf("zero number: %d\n", zeronumber)

fmt.printf("positive ratio: %f\n", positiveratio)
fmt.printf("negative ratio: %f\n", negativeratio)
fmt.printf("zero ratio: %f\n", zeroratio)

Wenn ich jedoch die Variable ausdrucke, erhalte ich die positiven, negativen und Nullzahlen richtig, aber das Verhältnis ist falsch. Dies ist die Ausgabe:

total number: 5
positive number: 2
negative number: 2
zero number: 1
positive ratio: 0.000000
negative ratio: 0.000000
zero ratio: 0.000000

Was habe ich falsch gemacht?


Richtige Antwort


Sie verwenden eine Ganzzahldivision anstelle einer Gleitkommadivision, die den Rest verwirft und nur den ganzzahligen Teil des Divisionsergebnisses zurückgibt.

Dies wird aufgrund von negativeNumbertotalNumber 都是 int32 类型,因此 NegativeNumber /totalNumber 执行整数除法,即执行除法并返回结果的下限(即 0)。然后,当您使用 float32(负数/总数) 将其转换为 float32 时,您会得到 0.0 erwartet.

Um die Gleitkommadivision verwenden zu können, muss einer der Operanden vom Typ Gleitkomma sein. Dazu können Sie Folgendes verwenden: float32(负数)/totalNumber

Das obige ist der detaillierte Inhalt vonGo – Verhältnis von positiven, negativen und Null-Elementen in einem Slice. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen