Почему моя пороговая проверка CO2 сбой, когда значение немного превышает предел (проблема с плавающей точкой) [закрыто]Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Почему моя пороговая проверка CO2 сбой, когда значение немного превышает предел (проблема с плавающей точкой) [закрыто]

Сообщение Anonymous »

Я строю трекер сбережений CO2 для сайта гостеприимства, где пользователи сохраняют CO2 и могут сажать дерево, когда их общая сбережения достигают 100 кг. Тем не менее, я сталкиваюсь с проблемой, когда, когда значение CO2 составляет чуть более 100 кг, кнопка «растение дерева» не включена. Ниже приведен код для трекера: < /p>

Код: Выделить всё

class GreenHospitality {
constructor() {
this.co2Saved = 0;
this.treeThreshold = 100.00; // Threshold to plant a tree
}

updateCO2() {
setTimeout(() => {
const newCO2 = Math.random() * 5 + 0.01; // Small random CO2 increase
this.co2Saved += newCO2;
console.log(this.co2Saved.toFixed(2));

if (this.co2Saved >= this.treeThreshold) {
console.log("You can plant a tree!");
}
}, 3000);
}
}
< /code>
Это для включения кнопки: < /p>

Plant a Tree


Upgrade Tree

if (this.co2Saved >= this.treeThreshold) {
this.treeStatus.textContent = "You can now plant a tree!";
this.plantTreeBtn.disabled = false;
} else {
this.treeStatus.textContent = "You need more CO₂ to plant a tree!";
this.plantTreeBtn.disabled = true;
}
< /code>
Слушатели событий кнопок: < /p>
document.getElementById("plant-tree-btn").addEventListener("click", () => game.plantTree());
document.getElementById("upgrade-tree-btn").addEventListener("click", () => game.upgradeTree());

Несмотря на то, что сбережения CO₂ показывают немного выше 100 кг (например, 100,001 ), кнопка для посадки дерева не включена. Кажется, что существует крошечная разница в значении из-за ошибок точности с плавающей точкой. Любые предложения о том, как исправить пороговую проверку таким образом, чтобы объяснить небольшие ошибки точности с плавающей точкой? Сравнение

[*] с использованием math.floor () и math.ceil () , чтобы настроить значение



Подробнее здесь: https://stackoverflow.com/questions/795 ... -the-limit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»