0
votes

Code a besoin de débogage. Je ne suis pas capable de comprendre comment les valeurs sont arrondies

Pourquoi le code n'est pas capable de terminer correctement dans certains cas de test qui ne sont pas parfaitement divisibles xxx

par exemple:

entrée (stdin)

7

votre sortie (stdout)

7,00

sortie attendue

7,00

Ceci L'étui à essai est correct car les chiffres après la décimale sont de 0 mais des cas de test comme ci-dessous: Entrée (stdin)

2 5

votre sortie (stdout)

3.00

sortie attendue

3.50 un autre exemple Entrée (stdin)

-95 -45 -56 48 36 79 -83 -16 -95 -57 1 -95 -61 30 9 -56 18 62 -99 61 40 -32 -69 92 -33 -82 -81 70 21 62 46 7 95 -24 10 66 24 73 16 41 -91 -55 -42 -84 -54 -80 -45 27 -27 -26 -58 -47 88 30 22 -66 46 -68 - 24 98 28 11 37 69

Votre sortie (stdout)

-6,00

sortie attendue

-5,98 < p> Ici, il n'est pas arrondi correctement s'il vous plaît aidez-moi avec le débogage de mon code


0 commentaires

3 Réponses :


0
votes
average = float(count) / float(len1)

0 commentaires

0
votes

parce que vous utilisez brut_input code>, je suppose que c'est Python 2, où diviser un entier par un autre entier résulte d'un entier.

donc ici: p>

average=count / float(len1)


0 commentaires

0
votes

Vos variables sont de type int .

Alors, lorsque vous faites la division, vous manquez la précision réelle. 13/2 = 6.5 mais parce que tous les types sont int le résultat sera 6 , vous manquez d'absorber le 0.5

Puis, lorsque vous faites le rond pour convertir simplement le résultat qui est en fait un int dans un flaot et vous finissez toujours par x.00

Ajouter un flotteur (variable) Pour résoudre votre problème


0 commentaires