Округление числа до ближайшей тысячи, вверх или вниз в зависимости от числа

javascript

24996 просмотра

3 ответа

Я хочу округлить число до ближайшей тысячи, на данный момент я использую это:

Math.ceil(value/1000)*1000;

Но это всегда идет вверх, если я наберу 1001, то перейду к 2000, я хочу увеличить или уменьшить число, например, 1001 - до 1000 или 1400 - до 1000, но 1500 - до 2000.

РЕДАКТИРОВАТЬ:

if(value<1000){
  value = 1000;
}else{
  value = Math.round(value/1000)*1000;
}
Автор: Gustavo Sanchez Источник Размещён: 12.11.2019 09:46

Ответы (3)


53 плюса

Решение

Это будет делать то, что вы хотите:

Math.round(value/1000)*1000

Примеры:

Math.round(1001/1000)*1000
1000
Math.round(1004/1000)*1000
1000
Math.round(1500/1000)*1000
2000
Автор: simonzack Размещён: 13.11.2014 10:30

3 плюса

var rest = number % 1000; 
if(rest > 500) 
{ number = number - rest + 1000; } 
  else 
{ number = number - rest; } 

может быть немного прямо вперед ... но это делает

РЕДАКТИРОВАТЬ: конечно, это должно идти в какой-то функции myRound ()

Я читал о проблеме с вашим 1, нуждающимся в округлении до 1000. Это поведение противоречиво по сравнению с остальными - так что вам придется добавить что-то вроде:

if(number < 1000)
{  number = 1000; return number; }

на вершине вашей функции;

Автор: Max Bumaye Размещён: 13.11.2014 10:33

0 плюса

Используя метод числа ES3, он выполняет округление, если не определено ни одного десятичного знака.

(value / 1000).toFixed() * 1000




Первоначальный ответ был:

(value / 1000).toFixed(3) * 1000;

Тем не менее, это неверно, поскольку значение будет возвращать точное исходное число, а не влиять на значение ceil / floor.

Автор: sam Размещён: 10.06.2016 01:36
Вопросы из категории :
32x32