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 ?
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 denegativeNumber
和totalNumber
都是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!