Maison> développement back-end> Golang> le corps du texte

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

王林
Libérer: 2024-02-06 11:15:07
avant
495 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 denegativeNumbertotalNumber都是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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!