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

王林
Libérer: 2024-02-06 11:15:07
avant
590 Les gens l'ont consulté

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)
Copier après la connexion

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
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal