Python Fonction round() avec des exemples

โšก Rรฉsumรฉ intelligent

Python La fonction round() est une fonction intรฉgrรฉe qui renvoie une valeur ร  virgule flottante ou entiรจre arrondie ร  un nombre spรฉcifiรฉ de dรฉcimales, en utilisant l'arrondi bancaire pour dรฉpartager les รฉgalitรฉs vers le chiffre pair le plus proche.

  • (I.e. syntaxe: round(number, ndigits) accepte la valeur ร  arrondir et un nombre de chiffres optionnel qui est par dรฉfaut ร  zรฉro.
  • โ˜‘๏ธ Type de retour : Omettre ndigits renvoie un entier, tandis que le fournir renvoie un nombre ร  virgule flottante.
  • โœ… Arrondi du banquier : Les valeurs intermรฉdiaires sont arrondies au nombre pair le plus proche, donc round(2.5) renvoie 2.
  • ๐Ÿงช Nombres nรฉgatifs : L'arrondi s'applique รฉgalement aux valeurs nรฉgatives, en transformant -2.8 en -3 et -1.5 en -2.
  • ๏ธ Outils de prรฉcision : Le module decimal et la fonction round() de NumPy gรจrent l'arrondi des nombres ร  prรฉcision fixe et des tableaux.
  • ๐Ÿค– Flux de travail d'IA : Le code d'apprentissage automatique arrondit les mรฉtriques, les probabilitรฉs et les pondรฉrations pour des journaux et des rapports plus propres.

Python Fonction ronde()

Qu'est-ce que la fonction round() dans Python?

Python round() est une fonction intรฉgrรฉe disponible avec PythonElle vous renverra un nombre flottant arrondi au nombre de dรฉcimales indiquรฉ en entrรฉe.

Si les dรฉcimales ร  arrondir ne sont pas prรฉcisรฉes, il est considรฉrรฉ comme 0 et il sera arrondi ร  l'entier le plus proche.

Syntaxe

round(float_num, num_of_decimals)

Paramรจtres

  • nombre_flottant : Le nombre flottant ร  arrondir.
  • nombre_de_dรฉcimales : (Facultatif) Nombre de dรฉcimales ร  prendre en compte pour l'arrondi. Ce paramรจtre est facultatif ; s'il n'est pas spรฉcifiรฉ, la valeur par dรฉfaut est 0 et l'arrondi est effectuรฉ ร  l'entier le plus proche.

Description

La mรฉthode round() prend deux arguments :

  • le nombre ร  arrondir, et
  • les dรฉcimales ร  prendre en compte lors de l'arrondi.

Le deuxiรจme argument est facultatif et vaut par dรฉfaut 0 s'il n'est pas spรฉcifiรฉ ; dans ce cas, il sera arrondi ร  l'entier le plus proche et le type de retour sera รฉgalement un entier.

Lorsque les dรฉcimales, c'est-ร -dire le deuxiรจme argument, sont prรฉsentes, l'arrondi sera effectuรฉ au nombre de dรฉcimales indiquรฉ. Le type de retour sera un float.

Si le chiffre aprรจs la virgule est :

  • >= 5, alors + 1 sera ajoutรฉ ร  la valeur finale.
  • < 5, alors la valeur finale sera renvoyรฉe telle quelle, jusqu'aux dรฉcimales mentionnรฉes.

Valeur de retour

Elle renverra un entier si le nombre de dรฉcimales n'est pas spรฉcifiรฉ, et un nombre ร  virgule flottante s'il est spรฉcifiรฉ. Veuillez noter que la valeur sera arrondie ร  1 si le nombre de dรฉcimales est supรฉrieur ou รฉgal ร  5 ; sinon, elle sera conservรฉe telle quelle, avec le nombre de dรฉcimales indiquรฉ.

Quel impact lโ€™arrondi peut-il avoir ? (Arrondi ou troncature)

Le meilleur exemple pour illustrer l'impact de l'arrondi est le marchรฉ boursier. Auparavant, c'est-ร -dire en 1982, Bourse de Vancouver (VSE) utilisรฉ pour tronquer les valeurs boursiรจres ร  trois dรฉcimales sur chaque transaction.

Cette opรฉration รฉtait effectuรฉe prรจs de 3 000 fois par jour. Les troncatures accumulรฉes entraรฎnaient une perte d'environ 25 points par mois.

Un exemple de troncature des valeurs par rapport ร  lโ€™arrondi est prรฉsentรฉ ci-dessous.

Considรฉrez les nombres ร  virgule flottante gรฉnรฉrรฉs ci-dessous comme des valeurs boursiรจres. Actuellement, je les gรฉnรจre pour une plage de 1 000 000 de secondes, entre 0.01 et 0.05.

Exemples :

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]

Pour illustrer l'impact de l'arrondi, j'ai รฉcrit un petit morceau de code dans lequel, dans un premier temps, on utilise les nombres jusqu'ร  seulement 3 dรฉcimales, c'est-ร -dire en tronquant le nombre aprรจs 3 dรฉcimales.

J'ai la valeur totale initiale, le total obtenu ร  partir des valeurs tronquรฉes, et la diffรฉrence entre la valeur initiale et la valeur tronquรฉe.

Sur le mรชme ensemble de nombres, j'ai utilisรฉ la mรฉthode round() jusqu'ร  3 dรฉcimales et calculรฉ la somme et la diffรฉrence entre la valeur d'origine et la valeur arrondie.

Voici l'exemple et le rรฉsultat.

Exemple 1

import random

def truncate(num):
    return int(num * 1000) / 1000

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
sum_num = 0
sum_truncate = 0
for i in arr:
    sum_num = sum_num + i  
    sum_truncate = truncate(sum_truncate + i)
  
print("Testing by using truncating upto 3 decimal places")
print("The original sum is = ", sum_num)
print("The total using truncate = ", sum_truncate)
print("The difference from original - truncate = ", sum_num - sum_truncate)

print("\n\n")
print("Testing by using round() upto 3 decimal places")
sum_num1 = 0
sum_truncate1 = 0
for i in arr:
    sum_num1 = sum_num1 + i  
    sum_truncate1 = round(sum_truncate1 + i, 3)

print("The original sum is =", sum_num1)
print("The total using round = ", sum_truncate1)
print("The difference from original - round =", sum_num1 - sum_truncate1)

Sortie :

Testing by using truncating upto 3 decimal places
The original sum is =  29985.958619386867
The total using truncate =  29486.057
The difference from original - truncate =  499.9016193868665

Testing by using round() up to 3 decimal places
The original sum is = 29985.958619386867
The total using round =  29985.912
The difference from original - round = 0.04661938686695066

La diffรฉrence entre la valeur originale et la valeur tronquรฉe est de 499.9016193868665, et d'aprรจs round(), elle est de 0.04661938686695066.

La diffรฉrence semble trรจs importante, et l'exemple montre comment la mรฉthode round() permet d'obtenir des calculs d'une prรฉcision quasi parfaite.

Exemple : arrondi flottant Numbers

Dans ce programme, nous verrons comment fonctionne l'arrondi des nombres ร  virgule flottante.

# testing round()

float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5

float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5

float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5

float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5

print("The rounded value without num_of_decimals is :", round(float_num1))
print("The rounded value without num_of_decimals is :", round(float_num2))
print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2))
print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))

Sortie :

The rounded value without num_of_decimals is : 11
The rounded value without num_of_decimals is : 10
The rounded value with num_of_decimals as 2 is : 10.35
The rounded value with num_of_decimals as 2 is : 10.34

Exemple : arrondir des valeurs entiรจres

Si vous utilisez round() sur une valeur entiรจre, il vous renverra simplement le nombre sans aucune modification.

# testing round() on a integer

num = 15

print("The output is", round(num))

Sortie :

The output is 15

Exemple : Arrondir sur le nรฉgatif Numbers

Voyons quelques exemples illustrant le fonctionnement de l'arrondi des nombres nรฉgatifs.

# testing round()

num = -2.8
num1 = -1.5
print("The value after rounding is", round(num))
print("The value after rounding is", round(num1))

Sortie :

C:\pythontest>python testround.py
The value after rounding is -3
The value after rounding is -2

Exemple : Arrondir les tableaux NumPy

Comment arrondir NumPy ? tableaux dans Python?

Pour rรฉsoudre ce problรจme, nous pouvons utiliser le module NumPy et la mรฉthode numpy.round() ou numpy.around(), comme illustrรฉ dans l'exemple ci-dessous.

Utiliser numpy.round()

# testing round()
import numpy as np

arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]

arr1 = np.round(arr, 2)

print(arr1)

Sortie :

C:\pythontest>python testround.py
[-0.34  1.46  4.23 -0.34  7.63  5.12]

On peut รฉgalement utiliser numpy.around(), qui donne le mรชme rรฉsultat que numpy.round() prรฉsentรฉ ci-dessus.

Exemple : module dรฉcimal

En plus de la fonction round(), Python possรจde un module dรฉcimal qui permet de gรฉrer les nombres dรฉcimaux avec plus de prรฉcision.

Le module Dรฉcimal propose diffรฉrents types d'arrondi, comme indiquรฉ ci-dessous :

  • PLAFOND_ROND : Elle tendra vers l'infini.
  • ARRONDI_INF : Elle arrondira la valeur vers zรฉro.
  • SOL_ROND : Elle s'arrondira vers -infini.
  • ARRONDI_MIDI_INFร‰RIEUR : Elle sera arrondie ร  la valeur la plus proche de zรฉro.
  • ARRONDI_MIDI_PAIR : Elle sera arrondie ร  la valeur la plus proche, en arrondissant ร  l'entier pair le plus proche.
  • ARRONDI_MIDI_SUP : Elle sera arrondie ร  la valeur la plus proche, en s'รฉloignant de zรฉro.
  • ARRONDI_UP : L'arrondi se fera lorsque la valeur s'รฉloignera de zรฉro.

En dรฉcimal, la mรฉthode quantize() permet d'arrondir ร  un nombre fixe de dรฉcimales, et vous pouvez spรฉcifier l'arrondi ร  utiliser, comme le montre l'exemple ci-dessous.

Exemple : Utilisation des mรฉthodes round() et dรฉcimales

import  decimal
round_num = 15.456

final_val = round(round_num, 2)

#Using decimal module
final_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING)
final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN)
final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR)
final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN)
final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN)
final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)
final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP)

print("Using round()", final_val)
print("Using Decimal - ROUND_CEILING ",final_val1)
print("Using Decimal - ROUND_DOWN ",final_val2)
print("Using Decimal - ROUND_FLOOR ",final_val3)
print("Using Decimal - ROUND_HALF_DOWN ",final_val4)
print("Using Decimal - ROUND_HALF_EVEN ",final_val5)
print("Using Decimal - ROUND_HALF_UP ",final_val6)
print("Using Decimal - ROUND_UP ",final_val7)

Sortie :

Using round() 15.46
Using Decimal - ROUND_CEILING  15.46
Using Decimal - ROUND_DOWN  15.45
Using Decimal - ROUND_FLOOR  15.45
Using Decimal - ROUND_HALF_DOWN  15.46
Using Decimal - ROUND_HALF_EVEN  15.46
Using Decimal - ROUND_HALF_UP  15.46
Using Decimal - ROUND_UP  15.46

FAQ

Non. Python 3 utilise l'arrondi ร  la moitiรฉ (arrondi bancaire) pour les รฉgalitรฉs, donc round(0.5) est 0, round(2.5) est 2 et round(3.5) est 4. Cela rรฉduit le biais cumulatif.

Comme 2.675 ne peut pas รชtre stockรฉ exactement en virgule flottante binaire (il est en rรฉalitรฉ reprรฉsentรฉ par environ 2.6749999999999998), la fonction `round()` arrondit ร  l'entier infรฉrieur. Pour obtenir un rรฉsultat exact, utilisez `decimal.Decimal('2.675')`.

Utilisez le module math : math.ceil(x) arrondit toujours ร  lโ€™entier supรฉrieur, math.floor(x) arrondit toujours ร  lโ€™entier infรฉrieur et int(x) tronque vers zรฉro. round() ne peut pas imposer une direction fixe.

Passez un deuxiรจme argument nรฉgatif : round(12345, -1) donne 12340, round(12345, -2) donne 12300 et round(12345, -3) donne 12000. Un nombre nรฉgatif de chiffres arrondit ร  gauche de la virgule dรฉcimale.

La fonction `round(x, 2)` modifie la valeur utilisรฉe dans les calculs ultรฉrieurs, tandis que `f'{x:.2f}'` se contente de formater l'affichage sans modifier la valeur du nombre. Utilisez `round()` pour les calculs et les chaรฎnes de caractรจres (`f-strings`) pour l'affichage.

Non. Numbers Les variables รฉtant immuables, la fonction `round()` renvoie une nouvelle valeur sans modifier sa valeur d'entrรฉe. L'affectation de cette valeur, par exemple `result = round(3.14159, 2)`, permet ร  la variable d'origine de conserver sa prรฉcision initiale.

Le code d'apprentissage automatique arrondit les valeurs de prรฉcision, de perte et de probabilitรฉ pour faciliter la lecture des journaux et associer les prรฉdictions aux รฉtiquettes de classe. Il conserve la prรฉcision maximale pour le calcul du gradient et n'arrondit que les mรฉtriques finales affichรฉes.

Oui. Les assistants IA tels que GitHub Copilot complรจtent automatiquement les fonctions round(), np.round() et l'arrondi dรฉcimal ร  partir d'un commentaire ou d'un nom de fonction, et les outils automatisรฉs transforment la mise en forme manuelle en appels ร  round(), mรชme si la prรฉcision choisie doit encore รชtre vรฉrifiรฉe.

Rรฉsumez cet article avec :