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