Ver Mensaje Individual
  #2  
Antiguo 14-05-2006
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Cita:
Empezado por TinkerBell
...123.225 y hago RoundTo(123.225,-2) me devuelve 123.22 cuando el valor correcto seria 123.23. ¿Como puedo hacer para que me redondee al alza como seria lo correcto?...
Bueno, en realidad lo "correcto" depende del tipo de redondeo que deba aplicarse según la normativa vigente en cada país y en cada ámbito (financiero, científico, etc.).

Como en Delphi Win32 no existe una previsión seria al respecto, me di a la tarea de desarrollar algunas funciones que facilitan el redondeo de cinco posibles formas:
1. Del banquero (al par más cercano): -2.5 ≈ -2, -1.5 ≈ -2, 1.5 ≈ 2, 2.5 ≈ 2
2. Hacia el cero: -2.5 ≈ -2, -1.5 ≈ -1, 1.5 ≈ 1, 2.5 ≈ 2
3. Hacia el infinito: -2.5 ≈ -3, -1.5 ≈ -2, 1.5 ≈ 2, 2.5 ≈ 3
4. Hacia el infinito positivo: -2.5 ≈ -2, -1.5 ≈ -1, 1.5 ≈ 2, 2.5 ≈ 3
5. Hacia el infinito negativo: -2.5 ≈ -3, -1.5 ≈ -2, 1.5 ≈ 1, 2.5 ≈ 2

Imagino que cuando Microsoft desarrolló la amplia y sofisticada biblioteca de clases (framework) de .NET, tuvo a bien incluir algunas clases o métodos que faciliten estos cinco posibles tipos de redondeo (quiero pensar que tuvo la mínima visión global para considerarlo ). Sería cosa de indagar en la biblioteca de clases de .NET.

Un abrazo redondo.

Al González.

P.D. Edité los nombres de los cinco tipos de redondeo para hacerlos más intuitivos y acordes a como aparecen en Wikipedia.

Última edición por Al González fecha: 02-12-2006 a las 19:55:39.
Responder Con Cita