Про клас Float у Ruby

Клас Float у Ruby представляє числа з плаваючою комою, тобто числа, що мають десяткову частину. Це дозволяє здійснювати високоточні математичні обчислення з десятковими дробами. Нижче наведено детальний огляд класу Float у Ruby.

Огляд

  • Числа з плаваючою комою: Це числа, які можуть мати як цілу, так і дробову частину.
  • Внутрішнє представлення: Float представляє числа за допомогою стандарту IEEE 754 з подвійною точністю, що означає, що числа зберігаються у форматі 64 біт.

Створення Float

Число з плаваючою комою можна створити декількома способами:

a = 1.23
b = 0.0
c = -123.456
d = 1e-10 # наукова нотація для 1 * 10^-10

Математичні операції

Float підтримує стандартні математичні операції:

a = 5.5
b = 2.0

sum = a + b         # Додавання
difference = a - b  # Віднімання
product = a * b     # Множення
quotient = a / b    # Ділення
exponent = a ** b   # Піднесення до степеня

Методи класу Float

Клас Float має велику кількість методів для роботи з числами з плаваючою комою:

  • Перевірка на спеціальні значення

    Float::INFINITY      # Нескінченність
    Float::NAN           # Не число (Not a Number)
    Float::MAX           # Максимальне значення Float
    Float::MIN           # Мінімальне нормалізоване значення Float
    
  • Методи об’єкта

    x = -7.65
    
    x.abs            # Абсолютне значення
    x.ceil           # Округлення до найближчого більшого цілого
    x.floor          # Округлення до найближчого меншого цілого
    x.round          # Округлення до найближчого цілого
    x.round(2)       # Округлення до вказаної кількості десяткових знаків (в даному випадку до 2)
    x.truncate       # Обрізання дробової частини
    x.to_i           # Перетворення у ціле число
    x.to_s           # Перетворення у рядок
    x.finite?        # Перевірка, чи є число кінцевим
    x.infinite?      # Перевірка, чи є число нескінченним (повертає 1 для позитивної нескінченності, -1 для негативної)
    x.nan?           # Перевірка, чи є число NaN
    

Приклади

# Перевірка на нескінченність
puts Float::INFINITY.infinite? # 1
puts (-Float::INFINITY).infinite? # -1

# Перевірка на NaN
nan_value = 0.0 / 0.0
puts nan_value.nan? # true

# Округлення
puts 1.23456.round(2) # 1.23

# Абсолютне значення
puts -3.14.abs # 3.14

Зауваження

  1. Точність: Через спосіб представлення чисел з плаваючою комою, можливі неточності при обчисленнях. Наприклад, 0.1 + 0.2 може не дати точно 0.3 через обмеження формату IEEE 754.
  2. Порівняння: Варто бути обережним при порівнянні чисел з плаваючою комою через можливі неточності.

Висновок

Клас Float у Ruby забезпечує потужний набір інструментів для роботи з числами з плаваючою комою, підтримуючи основні математичні операції та надаючи методи для їх обробки та аналізу. Однак через внутрішні обмеження формату зберігання варто бути уважним до можливих неточностей.