PDA

Ver la Versión Completa : ¿Valores extraños con la función Round()?


dec
30-06-2006, 13:48:41
¿Valores extraños con la función Round()?

Bajo un punto de vista de aplicaciones de gestión, devuelve valores extraños, pues el criterio de redondeo cuando la parte fraccionaria es 5 consiste en aumentar o no uno dependiendo si la parte entera es par o impar.


showmessage(floattostr(round(10.5))); // =>10

showmessage(floattostr(round(11.5))); // =>12


Si es preciso redondeos 'uniformes' entre las muchas manera que puede haber, una elegante sería sustituir Round por


trunc(x+0.5)

serrano
19-11-2007, 05:01:55
Pués sí que resulta extraño. Y esto me ha hecho pensar y recordar.

Redondear el .5 siempre hacia arriba puede ser un método más uniforme, pero no equitativo. En cuestiones financieras, por ejemplo, premiaría a una parte. En cuestiones de probabilidad, falsearía el resultado. Si el 10.5 está exactamente a la misma distancia de 10 que de 11, por qué siempre se ha de tomar como el valor superior. Esto es lo que creo trata de compensar el método empleado por Round, que si me parece equitativo.

Yo estoy acostumbrado a redondear el .5 hacia arriba. Es lo que me enseñaron. Y aunque recuerdo que en su momento no me pareció lógico, tampoco era lógico redondear hacia abajo, y hacia algún lado había que redondear. Pero no pensé entonces que en ciertas cuestiones podría resultar injusto o inexacto.