Skip to content

Convertit les nombres décimaux en entiers selon le même arrondi qu’Excel

Ronan Amicel requested to merge round-numbers-like-excel into main

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 :

Merge request reports