redondeo decimales foxpro

JESUS ANTONIO OCHOA ABAD
18 de Octubre del 2013

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 !

Marta
12 de Agosto del 2026

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