Подтвердить что ты не робот

Округлить до ближайшего .25 javascript

Я хочу преобразовать все числа в ближайшее .25

Итак...

5 becomes 5.00
2.25 becomes 2.25
4 becomes 4.00
3.5 becomes 3.50

Спасибо

4b9b3361

Ответ 1

Вот что говорит rslite:

var number = 5.12345;
number = (Math.round(number * 4) / 4).toFixed(2);

Ответ 2

Умножьте на 4, округлите до целого числа, разделите на 4 и отформатируйте с двумя десятичными знаками.

Изменить Любая причина для downvotes? По крайней мере оставить комментарий, чтобы узнать, что следует улучшить.

Ответ 3

Если вам нужна ваша скорость, обратите внимание, что вы можете получить около 30% -ное улучшение скорости, используя:

var nearest = 4;
var rounded = number + nearest/2 - (number+nearest/2) % nearest;

На моем веб-сайте: http://phrogz.net/round-to-nearest-via-modulus-division
Тесты производительности здесь: http://jsperf.com/round-to-nearest

Ответ 4

Вот общая функция для округления. В приведенных выше примерах использовалось 4, потому что оно обратное к .25. Эта функция позволяет пользователю игнорировать эту деталь. В настоящее время он не поддерживает предустановленную точность, но может быть легко добавлен.

function roundToNearest(numToRound, numToRoundTo) {
    numToRoundTo = 1 / (numToRoundTo);

    return Math.round(numToRound * numToRoundTo) / numToRoundTo;
}

Ответ 5

Вот ответ @Gumbo в виде функции:

var roundNearQtr = function(number) {
  return (Math.round(number * 4) / 4).toFixed(2);
};

Теперь вы можете совершать звонки:

roundNearQtr(5.12345); // 5.00
roundNearQtr(3.23); // 3.25
roundNearQtr(3.13); // 3.25
roundNearQtr(3.1247); // 3.00

Ответ 6

Очень хорошее приближение для округления:

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;
}

Ответ 7

Используйте функцию ниже, надейтесь, что она поможет

function roundByQuarter(value) {
    var inv = 1.0 / 0.25;
    return Math.round(value * inv) / inv;
}

Вызвать функцию, как показано ниже, приведет к ближайшему значению Quarter, то есть оно не вернется .32,.89,.56, но вернет только 0,25,.75,.50 десятичных знаков.

roundByQuarter(2.74) = 2.75

roundByQuarter(2.34) = 2.25

roundByQuarter(2.94) = 3.00

roundByQuarter(2.24) = 2.25

Ответ 8

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