Зарегистрируйтесь, чтобы продолжить обучение

Числа с плавающей точкой Основы Java

В математике существуют разные виды чисел, например:

  • Натуральные — это целые числа от 1 и больше
  • Рациональные — это числа с точкой, например, 0.5

С точки зрения устройства компьютеров, между этими видами чисел — пропасть. Попробуем сложить два рациональных числа:

0.2 + 0.1 = 0.3

А теперь посмотрим, что на это скажет Java:

0.2 + 0.1; // 0.30000000000000004

Операция сложения двух рациональных чисел внезапно привела к неточному вычислению результата. Тот же самый результат выдадут и другие языки программирования.

Такое поведение обуславливается ограничениями вычислительных мощностей. В отличие от чисел, объем памяти конечен — при этом бесконечное количество чисел требовало бы бесконечного количества памяти для своего хранения.

С натуральными числами эта проблема решается простым ограничением по верхней границе. Есть некоторое максимальное число, которое можно ввести:

System.out.println(Integer.MAX_VALUE);
// => 2147483647

С рациональными числами такой финт не пройдет. Дело в том, что они не выстроены в непрерывную цепочку, между 0.1 и 0.2 лежит бесконечное множество чисел.

А как тогда хранить рациональные числа? Подавляющее число языков программирования в этом случае опирается на единый стандарт, который описывает, как организовывать память в таких случаях.

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


Дополнительные материалы

  1. Что нужно знать про арифметику с плавающей запятой

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff