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

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

王林
Freigeben: 2024-02-06 11:15:07
nach vorne
608 Leute haben es durchsucht

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
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