Ответ 1
(Math.round(рейтинг * 2)/2).toFixed(1)
Я ищу вывод
4.658227848101266 = 4.5
4.052117263843648 = 4.0
ближайший я получил
rating = (Math.round(rating * 4) / 4).toFixed(1)
но с этим номером 4.658227848101266 = 4.8???
(Math.round(рейтинг * 2)/2).toFixed(1)
Это довольно просто, вы должны умножить это число на 2, затем округлить его, а затем разделить на 2:
var roundHalf = function(n) {
return (Math.round(n*2)/2).toFixed(1);
};
Это работает для меня! (Использование максимально возможного формата для вашего)
rating = (Math.round(rating * 2) / 2).toFixed(1)
Итак, этот ответ помог мне. Здесь немного добавлено магии для обработки округления до 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);
};
Я предполагаю, что вы хотите отформатировать номер для вывода и не усекать точность. В этом случае используйте DecimalFormat. Например:
DecimalFormat df = new DecimalFormat("#.#");
df.format(rating);