¡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.