Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmNuIC 43 of 350 menu
◀ ▶

Неточные вычисления в Go

Дробные числа с точкой хранятся приближенно. Не каждая десятичная дробь представима точно в двоичном виде, поэтому в памяти остается близкое, но не идеальное значение.

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

Сложим две известные десятичные дроби и выведем результат:

fmt.Println(0.1 + 0.2) // 0.30000000000000004

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

fmt.Println(0.3) // 0.3

Даны переменные:

a := 0.1 b := 0.2

Выведите сумму этих переменных и опишите, чем напечатанное число может отличаться от 0.3.

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить