Основное различие между double и float , оба из которых являются плавающими. точечные типы данных — это точность.
Double, как следует из названия, — это double точность float. Если число с плавающей запятой представлено 32 битами
, двойное число представлено 64 битами
.
Это приводит к различию в потребность в пространстве для хранения. Тип данных с плавающей запятой требует для хранения 4 байта; тогда как для типа double требуется 8 байтов памяти.
Формат IEEE 754
Формат IEEE для представления с плавающей запятой является стандартный формат для нескольких аппаратных устройств с плавающей запятой.
Float — это 32-битное число с плавающей запятой одинарной точности в IEEE 754 где старший бит MSB
зарезервирован как знаковый бит , следующие 8 бит используются для экспоненты, а последние 23 бита по стоимости. Это приводит к точности 6-7 десятичных цифр. Диапазон чисел, который он может представлять: 2 — 1 2 6 2 ^ {- 126} 2 −126 до 2 1 2 7 2 ^ {127} 2 127.
Напротив, двойное число — это 64-битное двойное -точность числа с плавающей запятой в соответствии с IEEE. MSB зарезервирован как знаковый бит, следующие 11 бит для показателя степени и последние 52 бита для значения, что дает точность в 15–16 десятичных цифр. Диапазон чисел, который он может представлять: 2 — 1 0 2 2 2 ^ {- 1022} 2 −1022 до 2 1 0 2 32^{1023} 2 1023.
Когда использовать?
Тип данных float
обычно используется, когда нас беспокоят высокие требования к вычислительной мощности. Одним из таких случаев могут быть графические библиотеки, такие как DirectX, Vulkan, OpenGL и т. Д. В видеоиграх обычно используются числа с плавающей запятой одинарной точности.
Тип данных float
— это также используется в случаях, когда мы допускаем ошибки округления.
Тип данных double
используется в случаях высоконаучного моделирования, когда используются сложные численные методы, требующие точных вычислений.
#include using namespace std; int main () {//Создание переменной типа double double d = 3.912348239293; //Создание переменной типа float float f = 3.912348239293f; //Выводим две переменные cout