Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   ¿Valores extraños con la función Round()? (https://www.clubdelphi.com/foros/showthread.php?t=80558)

dec 30-06-2006 13:48:41

¿Valores extraños con la función Round()?
 
¿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.

Código Delphi [-]
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

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 20:29:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi