Точность чисел с плавающей точкой зависит от их типа в C++ из-за разного размера занимаемой памяти и количества битов, выделенных для хранения мантиссы. metanit.com
В зависимости от типа, точность чисел с плавающей точкой следующая: metanit.com
- float. metanit.com 1 бит предназначен для хранения знака, 8 бит для экспоненты и 23 для мантиссы, что в сумме даёт 32 бита. metanit.com Мантисса позволяет определить точность числа в виде 7 десятичных знаков. metanit.com
- double. metanit.com 1 знаковый бит, 11 бит для экспоненты и 52 бита для мантиссы, то есть в сумме 64 бита. metanit.com 52-разрядная мантисса позволяет определить точность до 16 десятичных знаков. metanit.com
- long double. metanit.com Для этого типа расклад зависит от конкретного компилятора и реализации этого типа данных. metanit.com Большинство компиляторов предоставляют точность до 18–19 десятичных знаков (64-битная мантисса), в других же (как, например, в Microsoft Visual C++) long double аналогичен типу double. metanit.com
Кроме того, тип может точно представлять только определённое количество значащих цифр. www.learncpp.com Использование значения с большим количеством значащих цифр, чем минимальное, может привести к тому, что значение будет храниться неточно. www.learncpp.com