-
Notifications
You must be signed in to change notification settings - Fork 396
Traducción del operador // (floor division) al español #2754
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Muchas gracias @jcaalzago por el detalle. Voy a tomarme unos días para pensarlo detenidamente y compartir mis impresiones. |
Muchas gracias por la respuesta @cacrespo :) |
Hola @jcaalzago! Acabo de repasar en detalle el issue y definitivamente pienso que tenemos que hacer algo... Gracias a la maravilla de find_in_po.py veo que en muchos lugares está traducido como "división de piso", "división de suelo", "división de redondeo" ¿? Dado que como mencionás
pienso que deberíamos agregarle el "apellido". Por un lado, garantiza que cualquiera que tenga el concepto "mal aprendido" rápidamente puede asociarlo y por el otro, no perdemos precisión conceptual. Entonces, retomando tus propuestas... me inclino por:
Si tienes ganas podemos encarar todo este trabajo juntos. Obviamente, primero busquemos más feedback y aprobación del resto del grupo. |
Hola @cacrespo , me parece razonable la propuesta. Gracias. Respecto a lo de encarar todo el trabajo juntos, claro que sí, me gustaría mucho :). Y claro, buscando antes el respaldo de la comunidad, como comentas. Gracias por todo |
@jcaalzago excelente contribución, en mi caso aprendí con C++ y como mencionas crea cierta confusión dado que no se ven los mismos resultados. |
¡¡Muchas gracias @Sublian !! |
Al final aceptado el cambio de |
Uh oh!
There was an error while loading. Please reload this page.
En la documentación en español de Python se traduce el operador
//
y el términofloor division
como división entera.Creo que la traducción del término no es adecuada y para que se entienda los motivos que tengo, lo argumento a continuación.
Nota: para no crear confusión, en esta argumentación, me referiré con el término en inglés
floor division
. En el último punto expongo una serie de opciones que creo que ayudarían a eliminar el problema que creo que tiene esa traducción (obviamente se admiten sugerencias).Definiciones
División entera
El concepto de división entera implica que se cumple la siguiente igualdad:
Algunos tipos de división entera
La división entera engloba distintos resultados, todas las siguientes implementaciones son correctas (hay más) y tienen cabida dentro de la definición:
math.floor(Dividendo / divisor)
=>int(Dividendo / divisor)
resto >= 0 and resto < abs(divisor)
)math.trunc(Dividendo / divisor)
=>int(Dividendo / divisor)
Como podemos ver, de base usar únicamente división entera (sin ningún "apellido") a todas estas divisiones, resulta ambiguo, más que nada, porque todas son enteras. Es necesario especificar a qué tipo nos referimos. De usar una sin especificar el tipo, parece más razonable que la división entera fuera la última presentada (división truncada), porque en ella, al realizar la división a mano, no es necesario hacer ninguna operación extra para modificar ni el cociente, ni el resto, sale de forma natural al parar la división antes de obtener la parte fraccionaria.
"División entera" en la programación
En algunos lenguajes (no en Python)
En C
En C++
En Bash
En Java
En PHP
En Pascal
En todos estos lenguajes de programación (o de comandos, según el caso) la salida del programa es (en esta salida
//
representa a la división truncada (hacia 0) y%
al módulo):Es decir, en todos los ejemplos puestos, todos realizan la "división entera" como división truncada.
En Python
En cambio en Python (a partir de la versión 2.2 pep-0238/, versión en la que se crea el operador
//
) el código usando el dicho operador (//
) y el del módulo (%
) (que siempre es coherente con la división aplicada), sería el que sigue:En Python
Y la salida es la siguiente:
En este caso Python realiza la "división entera" como floor division.
Con esto no quiero decir que no haya más lenguajes que utilicen este criterio para la "división entera", ni que sea o no un buen criterio para el operador, simplemente que al traducirlo como "división entera", a los que vienen de alguno de los lenguajes que he comentado, la confusión está casi garantizada.
Seguimos en Python (biblioteca
decimal
)En la biblioteca decimal tenemos que el operador

//
y%
funcionan de forma distinta. Pego un extracto de la documentación de dicha biblioteca:Es decir, que el siguiente código en Python:
Produce esta salida:
La misma salida que producen en otros lenguajes, es decir, como división truncada.
Lo cual hace todavía más confuso usar de nuevo "división entera" para el mismo operador.
Resumen
//
, lleva directamente a equívoco. Seguramente hasta que no vea que no funciona como espera, no se va a percatar de que realmente se trata de un operador distinto al que está acostumbrado.floor division
, quedando bien claro qué hace.Propuesta
floor division
y del operador//
en un contexto distinto de la bibliotecadecimal
por una de las siguientes opciones (se admiten sugerencias):floor division
y del operador//
en el contexto de la bibliotecadecimal
por una de las siguientes opciones (se admiten sugerencias):floor division
y del operador//
a la memoria de traducción (añadiendo la distinción de cuando se traduce en la bibliotecadecimal
o en otros contextos.Bueno, creo que ya está bien XD.
Gracias si has llegado hasta aquí XD
The text was updated successfully, but these errors were encountered: