buenas noches quisiera redondear mis decimales a 50 y 00 que formula necesito para lograrlo ya use la funcion round(n1,n2)pero los decimales con n2=0 me redondea la parte entera y n2=2 me da decimales que no quiero. "los quiero en 50 o 00" gracias !
Hola,
Lo que necesitas no es redondear al número de decimales, es redondear al múltiplo de 0.50 más cercano (que es justo lo que da como resultado terminaciones «,50» o «,00»). ROUND(n1, n2) con n2 no sirve para esto porque ese parámetro controla cuántos decimales quieres, no a qué múltiplo redondear.
El truco estándar para «redondear al múltiplo de X más cercano» es multiplicar, redondear a entero, y volver a dividir:
lnResultado = ROUND(n1 * 2, 0) / 2
Ejemplos para que veas que funciona con tus dos casos:
3.27 × 2 = 6.54 → ROUND = 7 → 7 / 2 = 3.50
3.10 × 2 = 6.20 → ROUND = 6 → 6 / 2 = 3.00
3.80 × 2 = 7.60 → ROUND = 8 → 8 / 2 = 4.00
La lógica: al multiplicar por 2, cada «medio» (0.50) se convierte en un número entero completo, así que redondear a 0 decimales en ese punto es exactamente lo mismo que redondear al medio más cercano en la escala original. Dividir entre 2 al final deshace la multiplicación y te devuelve el valor en su escala normal, ya redondeado a 0.50.
Si en vez de 0.50 necesitaras redondear a otro múltiplo distinto (por ejemplo, al cuarto de unidad más cercano, 0.25), el mismo truco funciona cambiando el factor: multiplicas por 4 en vez de por 2, y divides entre 4 al final, en general ROUND(n1 / X, 0) * X te redondea al múltiplo de X más cercano para cualquier valor de X que necesites.
Marta