Ruby Academy · Урок

Рациональные числа и BigDecimal

Точные арифметические вычисления

Урок 4 из 413 шагов

«Рациональные числа и BigDecimal» — бесплатный урок Ruby Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Зачем нужна точная арифметика

Числа с плавающей точкой теряют точность. Для работы с деньгами и дробями Ruby предоставляет рациональные числа и BigDecimal, которые сохраняют точность.

puts 0.1 + 0.2

Создание рационального числа

Рациональное число — это точная дробь. Запишите его с суффиксом r или с помощью Rational(num, den).

puts (1r / 3)
puts Rational(2, 4)

Рациональные числа упрощаются автоматически

Рациональные числа автоматически сокращаются до несократимого вида, поэтому 2/4 превращается в 1/2.

puts Rational(6, 8)
puts Rational(10, 5)

Точная арифметика с дробями

Сложение рациональных чисел сохраняет точность, в отличие от чисел с плавающей точкой. Одна треть плюс одна треть плюс одна треть в точности равна единице.

third = Rational(1, 3)
puts (third + third + third)

Числитель и знаменатель

Получайте эти части с помощью numerator и denominator.

r = Rational(3, 4)
puts r.numerator
puts r.denominator

Преобразование рациональных чисел

to_f преобразует рациональное число в число с плавающей точкой, когда Вам нужно его десятичное приближение.

puts Rational(1, 8).to_f

Загрузка BigDecimal

BigDecimal работает с точными десятичными числами и идеально подходит для денег. Сначала подключите его из стандартной библиотеки.

require "bigdecimal"
a = BigDecimal("0.1")
b = BigDecimal("0.2")
puts (a + b).to_s("F")

Всегда используйте строки

Создавайте BigDecimal из строк, а не из чисел с плавающей точкой, чтобы точность не терялась ещё до начала вычислений.

require "bigdecimal"
good = BigDecimal("1.1")
puts good.to_s("F")

Расчёты с деньгами

BigDecimal сохраняет точность до цента во множестве операций.

require "bigdecimal"
price = BigDecimal("19.99")
qty = 3
total = price * qty
puts total.to_s("F")

Округление BigDecimal

round для BigDecimal позволяет точно управлять количеством знаков после запятой.

require "bigdecimal"
n = BigDecimal("2.675")
puts n.round(2).to_s("F")

Выбор подходящего инструмента

Используйте рациональные числа для точных дробей и отношений. Используйте BigDecimal для точных денежных значений с десятичной частью. Используйте числа с плавающей точкой для быстрых научных вычислений, где небольшая погрешность допустима.

require "bigdecimal"
puts Rational(1, 3)
puts BigDecimal("0.33").to_s("F")

Быстрая проверка

Проверьте точность арифметики.

Итоги

Вы изучили точную арифметику:

  • рациональные числа для точных дробей с автоматическим сокращением
  • numerator, denominator, to_f
  • BigDecimal из строк для точных денежных вычислений
  • выбор подходящего типа для каждой задачи

На этом курс «Числа и математика в Ruby» завершён.

puts (Rational(1, 2) + Rational(1, 3))
Можно начать бесплатно

Изучай Ruby с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
29
Уроки
109

Часто задаваемые вопросы

Урок «Рациональные числа и BigDecimal» бесплатный?

Да — полный текст урока «Рациональные числа и BigDecimal» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Рациональные числа и BigDecimal»?

Точные арифметические вычисления Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Рациональные числа и BigDecimal»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Целые и вещественные числа
  2. Арифметика и операторы
  3. Модуль Math
  4. Рациональные числа и BigDecimal
← Назад к Ruby Academy