C'était une histoire que j'allais tomber dans un piège lorsque j'implémentais un calcul d'essai en utilisant Python dans mon entreprise.
"Oh, je vais vous dire ce qui s'est passé maintenant!"
** "Je pensais arrondir" 2,5 "à" 3 ", mais avant de le savoir, c'était" 2 "" **
"Eh bien, je ne sais pas de quoi vous parlez, mais je ne savais pas ce que vous faisiez ..."
"Comme ma tête était jolie ... Si c'est une erreur de calcul ou un malentendu, c'est tellement chaotique. J'ai goûté quelque chose de plus effrayant ... "
Comme je l'ai dit plus tôt, je voulais arrondir en Python.
La première chose qui me vient à l'esprit ** fonction ronde ** ** fonction de format **
"Eh bien, si vous l'utilisez ici et là, vous pouvez vous le permettre."
La pensée fut soudainement brisée ...
>>> k=2.5
>>> round(k)
2
"e"
À cette époque, mon cerveau était rempli de méfiance à l'égard de l'arrondi que j'aurais dû apprendre dans l'enseignement obligatoire à cette époque.
** "Quand avez-vous eu l'illusion que 2,5 serait 3 en arrondissant?" **
Non Non Non Non
Si vous arrondissez «2,5», c'est «3».
Mais pourquoi?
Essayons-le avec la fonction format
>>> format(k, '.0f')
'2'
Comment. Êtes-vous gourou?
Mais pourquoi?
Quand je regarde Cette personne enquêtait et a également suggéré une ** solution **. ↓ ↓ ↓ Remarque parce que j'étais accro à l'arrondissement de python3
Dans cet article, il a été constaté que la cause était ** arrondi au nombre pair le plus proche **.
Arrondir au plus proche pair [modifier | Arrondir au pair le plus proche (RN) est arrondi vers le bas si la fraction est inférieure à 0,5, arrondi vers le haut si la fraction est supérieure à 0,5, arrondi vers le bas ou arrondi vers le haut si la fraction est exactement 0,5, selon les résultats pairs. Rouler à. Elle est définie comme la règle A dans JIS Z 8401 et est considérée comme «souhaitable» d'après la règle B (arrondi). L'arrondi entraîne un biais. Même s'il existe une proportion finie de données avec une fraction de 0,5, il n'y a pas de biais, et même si un grand nombre est ajouté, l'erreur d'arrondi ne s'accumule pas en biais vers un côté spécifique (pair +). Si les données ont des caractéristiques telles que 0,5 apparaît mais impair +0,5 n'apparaît pas, un biais apparaîtra toujours). Voir aussi: Wikipedia-Fraction
Il semble que 0,5 peut être arrondi à Python2 Python 3 est comme ça.
En d'autres termes Si vous le réglez sur "2,5", ce sera "2" du côté pair.
Donc, si vous le faites avec "3.5", ce sera "4".
>>> k=3.5
>>> round(k)
4
Où est la demande pour cette spécification ...
@Shiracamus a suggéré une solution à l'article que j'ai présenté plus tôt.
def round(x):
return (x*2+1)//2
def round(x,d=0): #Faites cela lorsque vous spécifiez le nombre de chiffres
p=10**d
return (x*p*2+1)//2/p
Cela l'a résolu. @ sak_2 @shiracamus Merci beaucoup.
Soyez prudent aussi.
Recommended Posts