Почему при округлении 1.999...8 получается 0? JS
Кол-во потопленных кораблей увеличивается на 1 после 3 попаданий по любому из не потопленных кораблей ( всего их три ).
Если потоплен 1 корабль, то все отображается корректно. Если 3, тоже. Но если сбиты только 2, то выводится 1.9999999999999998.
Пробовал использовать округление ( Math.ceil и Math.round) - не помогает, получается 0.
Очень прошу помочь.
isSunk(ship){
for(var i = 0; i < this.widthShips; i++){
if(ship.hits[i] !== 'hit'){
return false;
}
return true;
}
}
for(var i = 0; i < this.numShips; i++){
var ship = this.ships[i];
var index = ship.location.indexOf(guess);
if(index >= 0){
view.displayHit(guess);
view.displayMassege('Hit!');
ship.hits[index] = 'hit';
if(this.isSunk(ship)){
view.displayMassege('One battleship is sunk!');
this.sunkShips = this.sunkShips+1 / 3;
};
return true;
}
}
Проверяется кол-во потопленных кораблей после выстрела.
Я округляю значение sunkShips .
Ответы (1 шт):
this.sunkShips = this.sunkShips+1 / 3;
Считай число попаданий целочисленным счётчиком, а при выводе используй Math.floor(n / 3) - тогда всё будет работать правильно.
Пробовал использовать округление ( Math.ceil и Math.round) - не помогает, получается 0.
Если бы пробовал не при добавлении 1/3, а при выводе, то round бы помог. Или вообще .toFixed(0). Но надо считать правильно, а не так.
Но если сбиты только 2, то выводится 1.9999999999999998.