Javascript автоматически округляет до ближайшего целого числа

#javascript

#javascript

Вопрос:

Я пытаюсь программно увеличить ширину div на заданный процент в цикле. У меня есть div, который содержит индикатор выполнения, который я пытаюсь увеличить на X процентов с каждой итерацией. Мой код приведен ниже.

 var progressWidth = $('#progress').width();
var progressContainerWidth = $('#progressBar').width();

var currentWidth = Math.round((progressWidth / progressContainerWidth) * 100);
var newWidth = parseFloat(currentWidth)   parseFloat(0.6);

$('#progress').width(newWidth   '%');
  

Я пытаюсь каждый раз увеличивать процент ширины на 0,6. По какой-то причине оно автоматически округляет 0.6 до 1. Итак, моя начальная ширина равна 10%, и она составляет 10,6, 11,6, 12,6 и т.д…

Почему он добавляет 1.0, а не 0.6?

Комментарии:

1. Возможно, вы захотите проверить <progress> элемент. Но из того, что я вижу, кажется, что вы округляете в большую сторону, а затем добавляете 0,6.

2. потому что вы использовали Math.round для этого?

3. Какое значение currentWidth

4. @chbchb55 Да, именно это и происходит. Третья строка округляется до ближайшего целого числа, а не до двух знаков после запятой. Как только я это исправлю, все будет работать просто отлично.

Ответ №1:

Не округляйте свои проценты

В настоящее время вы используете Math.round команду say 10.6 , которая превращает его в 11 . Вместо этого просто добавьте 0.6 без округления.

 const currentWidth = progressWidth / progressContainerWidth * 100; // 10.6
const newWdith = currentWidth   0.6; // 11.2