Go - Nisbah unsur positif, negatif dan sifar dalam sekeping

王林
Lepaskan: 2024-02-06 11:15:07
ke hadapan
565 orang telah melayarinya

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)
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan