javascript - redondeo - Redondear el número al millar más cercano, hacia arriba o hacia abajo dependiendo del número
redondeo de numeros ejemplos (3)
Quiero redondear un número al millar más cercano, en el momento en que estoy usando esto:
Math.ceil(value/1000)*1000;
Pero esto siempre aumenta, si escribo 1001, irá a 2000, quiero subir o bajar dependiendo del número, por ejemplo, 1001 va a 1000 o 1400 a 1000 pero 1500 va a 2000
EDITAR:
if(value<1000){
value = 1000;
}else{
value = Math.round(value/1000)*1000;
}
Al utilizar el método del Número ES3, realiza un redondeo si no se define un lugar decimal.
(value / 1000).toFixed() * 1000
(value / 1000).toFixed(3) * 1000;
Sin embargo, esto es incorrecto, ya que el valor devolverá el número original exacto, en lugar de afectar el techo / piso en el valor.
Esto hará lo que quieras:
Math.round(value/1000)*1000
ejemplos:
Math.round(1001/1000)*1000
1000
Math.round(1004/1000)*1000
1000
Math.round(1500/1000)*1000
2000
var rest = number % 1000;
if(rest > 500)
{ number = number - rest + 1000; }
else
{ number = number - rest; }
Tal vez un poco directo ... pero esto lo hace
EDIT: por supuesto, esto debería ir en algún tipo de función myRound ()
Leí sobre el problema con la necesidad de redondear hasta 1000. Este comportamiento es contradictorio en comparación con el resto, por lo que tendrá que agregar algo como:
if(number < 1000)
{ number = 1000; return number; }
encima de tu función;