Misión TIC 2022 - UTP - Python BONUS - Comportamiento de Python con Round

preview_player
Показать описание
En este vídeo explicaré por qué round solo funcionó correctamente en algunos casos.

Link Python - Round:

Link Limitantes floats

Misión Ministerio de las TIC, MinTic 2022
Рекомендации по теме
Комментарии
Автор

Man eres un Crack, muchas gracias por el aporte.

williberto
Автор

Buen video. La solución alternativa es hacer la division por 80... que haciendo operación de fraccionarios es el resultado de (x/4)/20 = x/80. Con esto hace menos operaciones con aproximación y da un valor mas exacto al momento de hacer el redondeo.

wilsonflemus
Автор

Efectivamente depende de quien hizo el reto como lo resolvió. Varia maneras de verlo son:


def notaquices1(cod:str, nota1:int, nota2:int, nota3:int, nota4:int, nota5:int):
nota1=(nota1/20)
nota2=(nota2/20)
nota3=(nota3/20)
nota4=(nota4/20)
nota5=(nota5/20)
min_nota=min(nota1, nota2, nota3, nota4, nota5)
promedio =
print(promedio)
return promedio

def notaquices2(cod:str, nota1:int, nota2:int, nota3:int, nota4:int, nota5:int):
nota1=(nota1/20)
nota2=(nota2/20)
nota3=(nota3/20)
nota4=(nota4/20)
nota5=(nota5/20)
min_nota=float(min(nota1, nota2, nota3, nota4, nota5))
promedio = round((nota1+nota2+nota3+nota4+nota5-min_nota)/4, 2)
print(promedio)
return promedio

def notaquices3(cod:str, nota1:int, nota2:int, nota3:int, nota4:int, nota5:int):
nota1=round(nota1/20, 2)
nota2=round(nota2/20, 2)
nota3=round(nota3/20, 2)
nota4=round(nota4/20, 2)
nota5=round(nota5/20, 2)
min_nota=float(min(nota1, nota2, nota3, nota4, nota5))
promedio = round((nota1+nota2+nota3+nota4+nota5-min_nota)/4, 2)
print(promedio)
return promedio

def notaquices4(cod:str, nota1:int, nota2:int, nota3:int, nota4:int, nota5:int):

min_nota=float(min(nota1, nota2, nota3, nota4, nota5))

promedio =
print(promedio)
return round(promedio, 2)

print("el promedio metodo 1 es : ", notaquices1("aaa000", 45, 46, 33, 74, 22))

print("el promedio metodo 2 es : ", notaquices2("aaa000", 45, 46, 33, 74, 22))

print("el promedio metodo 3 es : ", notaquices3("aaa000", 45, 46, 33, 74, 22))

print("el promedio metodo 4 es : ", notaquices4("aaa000", 45, 46, 33, 74, 22))

promedio = 2.475

print("el promedio es : ", round(promedio, 2))



metodo 1 sin ningún redondeo, metodo 2 redondea solo el promedio, método 3 redondea todas las operaciones.

Solo se requiere el 2.475 para que redondee a 2.48 y por método 4 lo dá justo, por lo tanto no es atributo de la función round() sino la lógica que se usó pues el documento mencionado afirma que no en todos los casos un redondeo a 0.005 según la cifra fraccionaria expresada como flotante funciona como se espera.

johnguevara