Función python round () con EJEMPLOS

Redondo()

Round () es una función incorporada disponible con python. Le devolverá un número flotante que se redondeará a los lugares decimales que se dan como entrada.

Si no se especifican los lugares decimales que se redondearán, se considerará 0 y se redondeará al número entero más cercano.

En este tutorial de Python, aprenderá:

  • Redondo()
  • Sintaxis:
  • ¿Cuánto impacto puede tener el redondeo? (Redondeo vs Truncamiento)
  • Ejemplo: redondeo de números flotantes
  • Ejemplo: redondeo de valores enteros
  • Ejemplo: redondeo de números negativos
  • Ejemplo: matrices redondas y numerosas
  • Ejemplo: módulo decimal

Sintaxis:

round(float_num, num_of_decimals)

Parámetros

  • float_num: el número flotante a redondear.
  • num_of_decimals: (opcional) El número de decimales que se deben considerar al redondear. Es opcional y, si no se especifica, el valor predeterminado es 0 y el redondeo se realiza al número entero más cercano.

Descripción

El método round () toma dos argumentos

  • el número a redondear y
  • los lugares decimales que debe considerar al redondear.

El segundo argumento es opcional y el valor predeterminado es 0 cuando no se especifica, y en tal caso, se redondeará al número entero más cercano y el tipo de retorno también será un número entero.

Cuando estén presentes los lugares decimales, es decir, el segundo argumento, se redondeará al número de lugares dados. El tipo de retorno será flotante.

Si el número después del decimal dado

  • > = 5 que + 1 se agregará al valor final
  • <5 que el valor final devolverá, ya que está hasta los lugares decimales mencionados.

Valor devuelto

Devolverá un valor entero si no se da el num_of_decimals y un valor flotante si se da el num_of_decimals. Tenga en cuenta que el valor se redondeará a +1 si el valor después del punto decimal es> = 5; de lo contrario, devolverá el valor ya que está hasta los lugares decimales mencionados.

¿Cuánto impacto puede tener el redondeo? (Redondeo vs Truncamiento)

El mejor ejemplo para mostrar el impacto del redondeo es el del mercado de valores. En el pasado, es decir, en el año 1982, la Bolsa de Valores de Vancouver (VSE): solía truncar los valores de las acciones a tres lugares decimales en cada operación.

Se hizo casi 3000 veces al día. Los truncamientos acumulados suponen una pérdida de unos 25 puntos mensuales.

A continuación se muestra un ejemplo de truncar los valores frente al redondeo.

Considere los números de punto flotante generados a continuación como valores de acciones. Ahora mismo lo estoy generando para un rango de

1,000,000 segundos entre 0.01 y 0.05.

Ejemplos:

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

Para mostrar el impacto del redondeo, he escrito un pequeño fragmento de código en el que, al principio, debe usar los números hasta solo 3 lugares decimales, es decir, truncar el número después de 3 lugares decimales.

Tengo el valor total original, el total procedente de valores truncados y la diferencia entre el valor original y truncado.

En el mismo conjunto de números, he estado usando el método round () hasta 3 decimales y calculando la suma y la diferencia entre el valor original y el valor redondeado.

Aquí están el ejemplo y la salida.

Ejemplo 1

import randomdef truncate(num):return int(num * 1000) / 1000arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]sum_num = 0sum_truncate = 0for i in arr:sum_num = sum_num + isum_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 = 0sum_truncate1 = 0for i in arr:sum_num1 = sum_num1 + isum_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)

Producción:

Testing by using truncating upto 3 decimal placesThe original sum is = 29985.958619386867The total using truncate = 29486.057The difference from original - truncate = 499.9016193868665Testing by using round() up to 3 decimal placesThe original sum is = 29985.958619386867The total using round = 29985.912The difference from original - round = 0.04661938686695066

La diferencia entre el original y después de truncar es 499.9016193868665, y desde la ronda, es 0.04661938686695066

La diferencia parece ser muy grande, y el ejemplo muestra cómo el método round () ayuda a calcular cerca de la precisión.

Ejemplo: redondeo de números flotantes

En este programa, veremos cómo redondear palabras en números flotantes

# 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 >5float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5print("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))

Producción:

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

Ejemplo: redondeo de valores enteros

Si usa round () en un valor entero, simplemente le devolverá el número sin ningún cambio.

# testing round() on a integernum = 15print("The output is", round(num))

Producción:

The output is 15

Ejemplo: redondeo de números negativos

Veamos algunos ejemplos de cómo funciona el redondeo en números negativos.

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

Producción:

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

Ejemplo: matrices redondas y numerosas

¿Cómo redondear matrices numpy en Python?

Para resolver esto, podemos hacer uso del módulo numpy y usar el método numpy.round () o numpy.around (), como se muestra en el siguiente ejemplo.

Usando numpy.round ()

# testing round()import numpy as nparr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]arr1 = np.round(arr, 2)print(arr1)

Producción:

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

También podemos usar numpy.around (), que le da el mismo resultado que se muestra en el siguiente ejemplo.

Ejemplo: módulo decimal

Además de la función round (), Python tiene un módulo decimal que ayuda a manejar números decimales con mayor precisión.

El módulo Decimal viene con tipos de redondeo, como se muestra a continuación:

  • ROUND_CEILING: redondeará hacia Infinity,
  • ROUND_DOWN: redondeará el valor hacia cero,
  • ROUND_FLOOR: redondeará hacia -Infinity,
  • ROUND_HALF_DOWN: redondeará al valor más cercano yendo hacia cero,
  • ROUND_HALF_EVEN: redondeará al más cercano con el valor yendo al entero par más cercano,
  • ROUND_HALF_UP: se redondeará al más cercano con el valor alejándose de cero
  • ROUND_UP: redondeará donde el valor se alejará de cero.

En decimal, el método quantize () ayuda a redondear a un número fijo de lugares decimales, y puede especificar el redondeo que se utilizará, como se muestra en el siguiente ejemplo.

Ejemplo:

Usando métodos round () y decimal

import decimalround_num = 15.456final_val = round(round_num, 2)#Using decimal modulefinal_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)

Producción:

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

Resumen:

  • Round (float_num, Num_of_decimals) es una función incorporada disponible con python. Le devolverá el número flotante que se redondeará a los lugares decimales que se dan como entrada.
  • float_num: el número flotante a redondear.
  • Num_of_decimals: Es el número de decimales a considerar al redondear.
  • Devolverá un valor entero si no se da el num_of_decimals y un valor flotante si se da el num_of_decimals.

Articulos interesantes...