Maison >développement back-end >Golang >Go - Rapport d'éléments positifs, négatifs et nuls dans une tranche

Go - Rapport d'éléments positifs, négatifs et nuls dans une tranche

王林
王林avant
2024-02-06 11:15:07587parcourir

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

Contenu de la question

Je souhaite afficher le rapport des éléments positifs, négatifs et nuls dans une tranche. J'ai besoin du ratio au format float32. Voici mon 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)

Cependant, lorsque j'imprime la variable, j'obtiens les nombres positifs, négatifs et zéro corrects, mais le rapport est faux. Voici le résultat :

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

Qu'est-ce que j'ai fait de mal ?


Bonne réponse


Vous utilisez la division entière plutôt que la division en virgule flottante, qui supprime le reste et renvoie uniquement la partie entière du résultat de la division.

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

Pour utiliser la division en virgule flottante, l'un des opérandes doit être de type virgule flottante. Pour ce faire vous pouvez utiliser : float32(负数)/totalNumber

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer