Число раундов до ближайшего .5 десятичных

Я ищу вывод

4.658227848101266 = 4.5

4.052117263843648 = 4.0

ближайший я получил

rating = (Math.round(rating * 4) / 4).toFixed(1)

но с этим номером 4.658227848101266 = 4.8???

Ответы

Ответ 1

(Math.round(рейтинг * 2)/2).toFixed(1)

Ответ 2

Это довольно просто, вы должны умножить это число на 2, затем округлить его, а затем разделить на 2:

var roundHalf = function(n) {
    return (Math.round(n*2)/2).toFixed(1);
};

Ответ 3

Это работает для меня! (Использование максимально возможного формата для вашего)

   rating = (Math.round(rating * 2) / 2).toFixed(1)

Ответ 4

Итак, этот ответ помог мне. Здесь немного добавлено магии для обработки округления до 0,5 или целых чисел. Обратите внимание, что * 2 и /2 переключаются на /5 и *.5 по сравнению с каждым другим ответом.

/*
* @param {Number} n - pass in any number
* @param {Number} scale - either pass in .5 or 1
*/
var superCoolRound = function(n,scale) {
    return (Math.round(n / scale) * scale).toFixed(1);
};

Ответ 5

Я предполагаю, что вы хотите отформатировать номер для вывода и не усекать точность. В этом случае используйте DecimalFormat. Например:

DecimalFormat df = new DecimalFormat("#.#");
df.format(rating);