Вопрос по javascript – Отображать числа до двух знаков после запятой без конечных нулей

9

В моем коде я буду принимать несколько значений, например:

<code>8.7456
8.7
8
</code>

и мне нужно, чтобы они выглядели как

<code>8.74
8.7
8
</code>

то есть отображать до двух знаков после запятой.

Я это понимаю.toFixed(2) поможет мне с первым значением, но на 2-м и 3-м значении будут конечные нули, которые я не хочу.

Как получить желаемый результат?

Ваш Ответ

2   ответа
5

floor, разделите на 100.

var n = 8.7456;
var result = Math.floor(n * 100) / 100; // 8.74

Изменить: если вы смотрите на этот вопрос после факта, это, вероятно, не то, что вы хотите. Это удовлетворяет странному требованию иметь8.7456 появляются как8.74, Смотрите такжесоответствующий комментарий.

Арифметика с плавающей точкой не является точной, и вы время от времени сталкиваетесь с ошибками округления.
ну, может, мой компьютер "особенный" но если n равно 8,7, то это вычисление возвращает 8,69. мысли? peroija
по-видимому, согласно JS, 8,7 * 100 составляет 869,999999999. Как это может испортить что-то такое простое? peroija
13

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"
с округлением все в порядке, я изначально не хотел округлять, но оказалось, что должен. однако, если вы хотите опубликовать пример того, как сделать это без округления, я уверен, что кто-то в какой-то момент будет использовать его peroija
ладно ладно ты получил, больше никаких обновлений! я изменил вашу вторую итерацию на то, что вы опубликовали здесь (из-за8. результат) спасибо за помощь! peroija

Похожие вопросы