Los ordenadores son sólo máquinas, para hacer su trabajo necesitan unas instrucciones precisas, no entienden ambigüedades ni sutilezas. Las personas que nos dedicamos a la informática, en numerosas ocasiones, también.
Con su permiso, voy a contarles una batallita.
Hace unos años estaba encargado del mantenimiento de un programa de contabilidad y gestión de almacén. Según se iba acercando la implantación del euro, hubo que hacer modificaciones en el programa para que mostrase todos los importes en pesetas y euros.
Tras una breve reunión con los usuarios, se decidió añadir un campo adicional en los formularios y una columna más en los listados con el importe convertido en euros. Era un trabajo sencillo, y al cabo de una semana el cliente ya tenía la modificación hecha.
Al cerrar el mes, recibí una llamada del cliente, me contaba que los totales en euros que daba el programa y los que recibía de los proveedores no coincidían, eran errores pequeños, del orden de céntimos de euro, uno o dos euros a lo sumo, pero estaban ahí.
Lo primero que pensé fue que el factor de conversión (1 € = 166,386 pta) lo había puesto mal, revisé donde aparecía y estaba bien. Lo siguiente fue revisar el proceso de conversión a euros: multiplicaba el importe en pesetas por el factor de conversión y el resultado lo redondeaba a dos decimales. Todo parecía correcto.
Al final, hablando con personas que trabajaban en contabilidad me enteré que para pasar a euros el redondeo no es el mismo que el redondeo "matemático": pasando de pesetas a euros se redondea siempre "hacia arriba". De los diversos criterios "matemáticos" para redondear, uno de los más utilizados es el "redondeo al par más próximo".
Pesetas | Euros | |
---|---|---|
Redondeo “monetario” | Redondeo “matemático” | |
10,105 | 10,11 | 10,10 |
10,115 | 10,12 | 10,12 |
10,125 | 10,13 | 10,12 |
10,135 | 10,14 | 10,14 |
Pues bien, mi programa utilizaba una función que redondeaba "matemáticamente". Se cambió la función para que redondease "hacia arriba" y todo arreglado en unos minutos.
¿Por qué surgió este problema? Fue un doble error, del cliente y mío. Del cliente por presuponer que yo sabía cómo se redondea "monetariamente", y mío por no preguntarlo (pienso que la forma de redondear "matemática" es más precisa y promedia los errores de redondeo mejor que el método "monetario": tengo la mente un tanto cuadriculada, y así trabajo).
Conclusión: los informáticos, en muchas ocasiones, pensamos diferente que nuestros usuarios.
La próxima vez que llame al informático de su oficina no le diga "no puedo imprimir".
Dígale "al tratar de imprimir en la impresora X, me salta un cuadro de error que dice 'La junta de la trócola se ha descogorciado. Aceptar/Cancelar'".
Verá cómo su informático tarda menos en arreglar el problema y lo hace con una sonrisa en el rostro.
Si está encargando al programador un listado de clientes no le diga "quiero un listado de los clientes". Mejor será "quiero un listado de clientes, ordenados por su CIF ascendentemente, con 50 líneas como máximo por pantalla y la posibilidad de reordenar el listado por apellidos, fecha de alta en el sistema o número de teléfono".
No tema agobiar a un informático nunca con un exceso de información (relevante, eso sí). Nos gusta y lo agradecemos.
Buen articulo, divertido y bien escrito. Se agradece una sección como ésta, para los no expertos en informatica. Insistan.
ResponderEliminarbuena historia. Pero yo no entiendo lo de redondear al ''par'' más próximo, y no al entero. No término de ver la ventaja en que 10,115 y 10,125 redondeen a la misma cifra...Saludos y espero seguir leyéndote
ResponderEliminarMuy agradable y refrescante el tono del art
ResponderEliminarDani K:El redondeo al par más proximo es muy sencillo:Supongamos que tenemos que redondear 49,355 a dos decimales. Hay dos posibilidades: redondear a 49,35 o a 49,36. Si seguimos el criterio del par más próximo se redondearía a 49,36, por ser el número par más cercano.Los métodos ''matemáticos'' lo que tratan es de compensar los errores inherentes a todo redondeo. Cuando se redondea una gran cantidad de datos con estos métodos se minimiza el error, puesto que lo que a unos ''les das de más'' a otros ''se lo quitas''.El método de redondeo ''monetario'' siempre redondea hacia arriba, no es estadísticamente ''justo''.Un saludo.
ResponderEliminar[Comienzo Cita]Si está encargando al programador un listado de clientes no le diga “quiero un listado de los clientes“. Mejor será “quiero un listado de clientes, ordenados por su CIF ascendentemente, con 50 líneas como máximo por pantalla y la posibilidad de reordenar el listado por apellidos, fecha de alta en el sistema o número de teléfono“[Fin Cita][Entrando en modo Doctor House]La base de la informática es ésta: ¡el usuario es idiota! Pedirle que piense en cómo quiere las cosas antes de pedirlas es muy bonito, pero el mundo real no funciona así (de hecho el mundo real no funciona, pero asumamos para nuestros propósitos que sí). Los usuarios son como las gentes que criticaba Oscar Wilde; prefieren morir antes que usar el cerebro y por lo general lo consiguen.Después de recibir una petición tan escueta que no sirve para nada el informático se ve reducido a usar técnicas propias del teniente Grüber, el de la Gestapo, para arrancar al usuario un mínimo de información supuestamente veraz y útil (¡Ja!). Y le conviene asumir que una vez acabado el trabajo, cualquier trabajo, el usuario decidirá después de verlo que en realidad lo quería todo al revés... perdón, que tontería, dirá que _NECESITA_ todo al revés. Y lo peor es que muchas veces será cierto, porque resultará que se le olvidó mencionar unas pocas docenas de requisitos esenciales.Y, claro, de vuelta al ordenador, a veces a empezar desde cero, o desde números negativos, porque encima el usuario sale de la reunión cabreado y convencido de que estos informáticos ¡que ni siquiera saben leerle la mente! son unos incompetentes.En fin.. el sistema es un desastre, pero a los informáticos nos permite ganarnos la vida. Y cuando uno llega a veterano, le salen callos en las orejas, y comprende que los plazos y los presupuestos son meramente indicativos y que lo que al usuario le importa de verdad es salirse con la suya, que conseguir el programa en el plazo previsto al precio presupuestado es muy, muy secundario para él, ahorra mucho stress.[saliendo de modo Doctor House]
ResponderEliminarPor los ejemplos que has puesto del redondeo, me parece que te faltan datos. Sí que existe una regla oficial para el redondeo a dos decimales: si el tercer decimal es 5 o mayor que 5, se suma una décima. Si es menor que 5, se queda como está. De modo que no es redondeo al alza como dices, sino que depende del valor de la milésima. Si esos contables que conoces redondean siempre al alza, lo están haciendo mal.2, 315 >> 2,322,314 >> 2,31Es al alza para las milésimas 5,6,7,8,9 y a la baja para las milésimas 0,1,2,3,4 (claro que para el cero el redondeo no es ni al alza ni a la baja si el resto de decimales es también cero. Por cierto, eso no es un problema del euro, también pasaba con las pesetas.Me sorprende eso del redondeo ''matemático'' y ''monetario''. Si se aplica una regla de redondeo, entonces es tan matemática como otra regla.Para terminar: hay una método informático muy simple para para aplicar el redondeo correcto a los precios en euros con más de tres decimales (que suelen proceder de calcular el IVA o ciertos descuentos) : se le suma 0,005 a la cantidad a redondear y se trunca el resultado a dos decimales. Es la que yo aplico, no la he visto en ninguna parte pero seguro que la hemos inventado muchos.
ResponderEliminarBruno:No me expliqué bien. El problema que teníamos con el redondeo era sólo en los casos en que el tercer decimal era un 5. En los otros casos estaba claro si era al alza o a la baja.Lo de ''matemático'' y ''monetario'' lo he puesto entre comillas porque no creo que sea una denominación académica u oficial.El redondeo que llamo ''matemático'' lo aplicábamos en las prácticas de laboratorio de química, en los que tratábamos con ingentes cantidades de cifras y debíamos minimizar los errores usando un método de redondeo estadísticamente aceptable.
ResponderEliminar¿No sería más fácil que un economista aprendiera a programar a que un informático aprenda economía? Es decir, si según dices al informático hay que detallarle el algoritmo (función de conversión) y el resultado por pantalla, poco más le va a dar al economista darle esa información en castellano que en pseudocódigo; un poco más de esfuerzo y puede dar el núcleo del código directamente, por ejemplo, para dejar al informático la tarea de pegarse con la API del windows.¿O no?
ResponderEliminarPepe:Como te lean los futuros integrantes de los colegios de ingenieros informáticos te van a crucificar. No quieren intrusos en la profesión ;-)
ResponderEliminarBueno, exactamente esa es la duda que se me plantea. Si para que el informático haga un programa para el economista, es necesario que éste último le detalle el algoritmo, ¿quién es el intruso? Es decir, según lo describes, los que tendrían que rebelarse son los licenciados. Que tengan que ''dictárselo'' a un tercero, como bien describes en tu artículo, es fuente de problemas tanto para el tercero como para ellos. Parece claro que saber qué método se usa para el redondeo no es cometido del informático; ¿por qué no dedicarse pues a tareas de informático? ¿Por qué los informáticos reniegan de su profesión, e incluso llaman intrusos a los que quieren usar la informática (como herramienta que es) para facilitar su tarea?
ResponderEliminarAhí le has dado. Sin desmerecer a los ingenieros informáticos, creo que no es necesario tener ese título para saber programar.Personalmente, me niego a que los ingenieros informáticos se apoderen de una herramienta como es la programación. Es como si los matemáticos fuesen los únicos autorizados a hacer logaritmos.En mi facultad había excelentes programadores que usaban un lenguaje de programación como una herramienta más para resolver problemas, igual que utilizaban las pipetas y los matraces.Por supuesto que serían (seríamos) incapaces de diseñar e implementar un sistema operativo, pero no lo necesitamos: para eso están los ingenieros informáticos.
ResponderEliminarYo también he estudiado Química y el redondeo ''matemático'' que utilizábamos es el redondeo que tú llamas monetario. Lo de redondear al par más cercano no lo había escuchado antes, no está mal, pero si han de redondear a mano los operarios de la fábrica en la que estoy, creo que tendré dificultades en hacérselo entender. Para redondear promedios prefiero que sigan con el redondeo ''monetario'' y encontraré menos fallos.
ResponderEliminar