Convertit les nombres décimaux en entiers selon le même arrondi qu’Excel
Contexte
@sylvainboulade nous a fait part d’une différence entre l’indicateur calculé et la valeur attendue sur un jeu de données (le nombre de locaux par commune sur suivi_fthd
).
En examinant le fichier Excel source, il s’avère que la colonne qu’on importe comme un entier (et affichée sans chiffres après la virgule) est en fait un flottant, arrondi par Excel à l’affichage.
Contenu
Jusqu’ici on faisait une troncation (int(s)
) de la valeur, alors qu’Excel
affiche la valeur arrondie.
À noter qu’on ne peut pas juste faire un round(s)
car l’algorithme d’arrondi
de Python 3 est légèrement différent de celui d’Excel ou LibreOffice.
Ainsi lorsqu’une valeur est exactement entre deux entiers, comme 2.5
, alors
Excel arrondira à l’entier supérieur (3
) quand Python arrondira à l’entier
pair le plus proche (2
). C’est statistiquement préférable, mais pourrait
causer des petites différences difficiles à comprendre, donc on se cale sur
l’algorithme dit d’arrondi arithmétique.
Références :