Redondeo dos veces - en una regla

Necesito redondear un número por 1/32 y LUEGO redondearlo por 1/100. Sin embargo, necesito convertir esto en una sola regla de redondeo (usando un programa arcaico...). Puedo multiplicar y dividir el número original y todo eso, pero no puedo redondear dos veces...

¿Hay alguna manera de hacer esto matemáticamente?

¡Gracias!

kcross

preguntado el 03 de mayo de 12 a las 14:05

Es un lenguaje propiciatorio para este programa. Aunque bastante similar a Java. Me permitirá hacer un redondeo (es decir, puedo decirle que redondee un número por 1/100) pero no me permitirá hacer redondeos secuenciales... así que básicamente necesito darle una sola regla de redondeo y convertir el número de alguna manera .. -

1 Respuestas

Si lo que sea que esté usando le permite definir funciones, la implementación más legible sería esta:

function round(x, interval){
    //implementation left as an exercise to the reader
}

#rounds x by interval1, then by interval2
function doubleRound(x, interval1, interval2){
    return round(round(x, interval1), interval2)
}

pero si todo lo que tiene es aritmética simple, puede desenrollar todo en una declaración.

Para redondear un número no negativo x al intervalo más cercano de N, puede usar esta fórmula:

round(x,N) = floor((x + (N/2)) / N) * N

para redondear dos veces, anida la función dentro de sí misma:

round(round(x, N1), N2) = floor(((floor((x + (N1/2)) / N1) * N1) + (N2/2)) / N2) * N2

así que para redondear por 1/32 y luego 1/100, usas:

floor(((floor((x + ((1/32)/2)) / (1/32)) * (1/32)) + ((1/100)/2)) / (1/100)) * (1/100)

contestado el 03 de mayo de 12 a las 15:05

muchas gracias compañero ¿Qué haría el piso? (No estoy seguro de si hay una función de piso tbh ....) - cruz keynesiana

floor toma un número y corta todo a la derecha del punto decimal. por ejemplo, floor(1.2) devoluciones 1, floor(17.9) devoluciones 17. - Kevin

Muchas gracias. No estoy seguro si este programa hace pisos (lamentablemente)... Es brutal. aunque gracias - cruz keynesiana

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.