Вопрос по javascript – Отображать числа до двух знаков после запятой без конечных нулей
В моем коде я буду принимать несколько значений, например:
<code>8.7456 8.7 8 </code>
и мне нужно, чтобы они выглядели как
<code>8.74 8.7 8 </code>
то есть отображать до двух знаков после запятой.
Я это понимаю.toFixed(2)
поможет мне с первым значением, но на 2-м и 3-м значении будут конечные нули, которые я не хочу.
Как получить желаемый результат?
2
ответа
floor
, разделите на 100.
var n = 8.7456;
var result = Math.floor(n * 100) / 100; // 8.74
Изменить: если вы смотрите на этот вопрос после факта, это, вероятно, не то, что вы хотите. Это удовлетворяет странному требованию иметь8.7456
появляются как8.74
, Смотрите такжесоответствующий комментарий.
Арифметика с плавающей точкой не является точной, и вы время от времени сталкиваетесь с ошибками округления.
ну, может, мой компьютер "особенный" но если n равно 8,7, то это вычисление возвращает 8,69. мысли?
по-видимому, согласно JS, 8,7 * 100 составляет 869,999999999. Как это может испортить что-то такое простое?
Number.toFixed
округлить число до двух цифр и отформатировать в виде строки. Тогда используйтеString.replace
отрубить конечные нули:
(8.7456).toFixed(2).replace(/\.?0+$/, ""); // "8.75"
(8.7).toFixed(2).replace(/\.?0+$/, ""); // "8.7"
(8).toFixed(2).replace(/\.?0+$/, ""); // "8"
с округлением все в порядке, я изначально не хотел округлять, но оказалось, что должен. однако, если вы хотите опубликовать пример того, как сделать это без округления, я уверен, что кто-то в какой-то момент будет использовать его
ладно ладно ты получил, больше никаких обновлений! я изменил вашу вторую итерацию на то, что вы опубликовали здесь (из-за
8.
результат) спасибо за помощь!