redondear - quitar decimales javascript
redondea al más cercano.25 javascript (8)
Aquí está la respuesta de @Gumbo en forma de una función:
var roundNearQtr = function(number) {
return (Math.round(number * 4) / 4).toFixed(2);
};
Ahora puedes hacer llamadas:
roundNearQtr(5.12345); // 5.00
roundNearQtr(3.23); // 3.25
roundNearQtr(3.13); // 3.25
roundNearQtr(3.1247); // 3.00
Quiero convertir todos los números al .25 más cercano.
Asi que...
5 becomes 5.00
2.25 becomes 2.25
4 becomes 4.00
3.5 becomes 3.50
Gracias
Aquí hay una función genérica para hacer redondeos. En los ejemplos anteriores, se usó 4 porque está en el inverso de .25. Esta función le permite al usuario ignorar ese detalle. Actualmente no admite la precisión preestablecida, pero puede agregarse fácilmente.
function roundToNearest(numToRound, numToRoundTo) {
numToRoundTo = 1 / (numToRoundTo);
return Math.round(numToRound * numToRoundTo) / numToRoundTo;
}
Aquí hay una implementación de lo que dijo rslite:
var number = 5.12345;
number = (Math.round(number * 4) / 4).toFixed(2);
Multiplica por 4, redondea a entero, divide por 4 y formatea con dos decimales.
Editar ¿ Alguna razón para los downvotes? Al menos deja un comentario para saber qué se debe mejorar.
Si le preocupa la velocidad, tenga en cuenta que puede obtener una mejora de velocidad del 30% mediante el uso de:
var nearest = 4;
var rounded = number + nearest/2 - (number+nearest/2) % nearest;
Desde mi sitio web: http://phrogz.net/round-to-nearest-via-modulus-division
Pruebas de rendimiento aquí: http://jsperf.com/round-to-nearest
Una muy buena aproximación para el redondeo:
function Rounding (number, precision){
var newNumber;
var sNumber = number.toString();
var increase = precision + sNumber.length - sNumber.indexOf(''.'') + 1;
if (number < 0)
newNumber = (number - 5 * Math.pow(10,-increase));
else
newNumber = (number + 5 * Math.pow(10,-increase));
var multiple = Math.pow(10,precision);
return Math.round(newNumber * multiple)/multiple;
}
Utilice la función de abajo, espero que ayude
function roundByQuarter(value) {
var inv = 1.0 / 0.25;
return Math.round(value * inv) / inv;
}
Llame a la función como se muestra a continuación, obtendrá el valor del Trimestre más cercano, es decir, no devolverá .32, .89, .56, pero devolverá .25, .75, .50 decimales solamente.
roundByQuarter(2.74) = 2.75
roundByQuarter(2.34) = 2.25
roundByQuarter(2.94) = 3.00
roundByQuarter(2.24) = 2.25
function roundToInc(num, inc) {
const diff = num % inc;
return diff>inc/2?(num-diff+inc):num-diff;
}
> roundToInc(233223.2342343, 0.01)
233223.23
> roundToInc(505, 5)
505
> roundToInc(507, 5)
505
> roundToInc(508, 5)
510