Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Go - Nisbah unsur positif, negatif dan sifar dalam sekeping

Go - Nisbah unsur positif, negatif dan sifar dalam sekeping

王林
王林ke hadapan
2024-02-06 11:15:07562semak imbas

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

Isi soalan

Saya ingin memaparkan nisbah unsur positif, negatif dan sifar dalam sekeping. Saya memerlukan nisbah dalam format float32. Ini kod saya:

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)

Namun, apabila saya mencetak pembolehubah, saya mendapat nombor positif, negatif dan sifar betul, tetapi nisbahnya salah. Ini adalah outputnya:

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

Apa salah saya?


Jawapan betul


Anda menggunakan pembahagian integer dan bukannya pembahagian titik terapung, yang membuang baki dan mengembalikan hanya bahagian integer hasil pembahagian.

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

Untuk menggunakan pembahagian titik terapung, salah satu operan mestilah daripada jenis titik terapung. Untuk melakukan ini, anda boleh menggunakan: float32(负数)/totalNumber

Atas ialah kandungan terperinci Go - Nisbah unsur positif, negatif dan sifar dalam sekeping. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam