JS властивість Number.EPSILON


На даний момент опис відсутній.

Порада

Якщо ви створюєте бібліотеку або функцію для математичних операцій, завжди враховуйте Number.EPSILON для обробки чисел з плаваючою комою. Це допоможе уникнути непередбачуваних помилок порівняння.

автор: Bond
Порада

Використовуйте Number.EPSILON для порівняння чисел з плаваючою комою. Через обмеження представлення чисел в комп'ютерах, пряме порівняння двох чисел з плаваючою комою може не завжди давати очікуваний результат. Наприклад:

if (Math.abs(a - b) < Number.EPSILON) {
    console.log('Числа майже рівні.');
}
автор: Bond
Нотатка

Для початківців важливо розуміти, що Number.EPSILON не є мінімальним представимим числом в JavaScript. Він лише вказує на мінімальну різницю між двома числами, яку JavaScript вважає відмінною від нуля.

автор: Bond

Синтаксис

Number.EPSILON

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
34 25 9 21 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 34 25 9
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.12.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо Number.EPSILON для порівняння двох чисел з плаваючою комою. Завдяки цьому можна визначити, чи є вони "майже рівними", ураховуючи потенційні неточності представлення чисел у комп'ютерах.

const num1 = 0.1 + 0.2;
const num2 = 0.3;

if (Math.abs(num1 - num2) < Number.EPSILON) {
    console.log('Числа майже рівні.');
} else {
    console.log('Числа відмінні.');
}
// Виведе: Числа майже рівні.
автор: Bond

У цьому прикладі ми розглянемо складніший сценарій, де використовуємо Number.EPSILON для перевірки коректності обчислення власної функції sqrt, яка визначає квадратний корінь числа за допомогою методу Ньютона.

function sqrt(x, guess = x / 2.0) {
    const improved_guess = (guess + x / guess) / 2;
    if (Math.abs(guess - improved_guess) < Number.EPSILON) {
        return improved_guess;
    }
    return sqrt(x, improved_guess);
}

const result = sqrt(2);
console.log(result); // Приблизно 1.414213562373095

// Перевірка результату за допомогою вбудованої функції
if (Math.abs(result * result - 2) < Number.EPSILON) {
    console.log('Результат вірний.');
} else {
    console.log('Результат невірний.');
}
// Виведе: Результат вірний.
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід