@snxwfall

Сколько бит(байт) занимают типы данных с плавающей запятой в C++?

Например,int занимает 4 байта,из-за этого,работая с этим типом данных,мы можем работать только с ограниченными по величине цифрами.Но в случае с double можно задать абсолютно любое число,да еще и указать множество цифр после запятой.Как это работает?
И еще,пользуясь случаем,хочу спросить: для чего в конце приписывают 'f' ,когда пользуются типом данных float?
5d1610911369c751179657.png
  • Вопрос задан
  • 4276 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Например, int занимает 4 байта

По современному консенсусу, да. Но иногда может занимать 2 байта (меньше — вроде нет).

В случае с double можно задать абсолютно любое число

double x = 1e500;
Ответ статического анализатора Clang: magnitude of floating-point constant is too large for type 'double'; maximum is 1.79…E+308

На число 1.23456789012345678901234 не жалуется, но учите матчасть — относительная точность double 52 двоичных цифры (исключая головную единицу), или около 16 десятичных.

для чего в конце приписывают 'f' ,когда пользуются типом данных float?

Чтобы расчёт float x; return x + 12.34f вёлся в менее точном типе float, а не double.
А вот коду float x = 12.34; это совершенно не нужно, компилятор и сам поймёт, что преобразование double → float можно сделать при компиляции.

Сколько бит(байт) занимают типы данных с плавающей запятой в C++?

Зависит от машины, но по выработанному консенсусу — float 4, double 8.
Нестандартная (присущая x86) реализация long double имеет 10 значащих байтов, но 12 или 16 вместе с выравниванием.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Zoominger
@Zoominger
System Integrator
Но в случае с double можно задать абсолютно любое число

Нет.
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
int занимает 4 байт

Не всегда. Зависит от платформы. Вы всегда можете проверить написав sizeof(int), sizeof(double) и т.п.

Но в случае с double можно задать абсолютно любое число,да еще и указать множество цифр после запятой.Как это работает?


Числа с плавающей точкой (запятой) имеют ограничение по точности. Т.е. В общем случае A + B ≈ С;
Ответ написан
Комментировать
@vanyamba-electronics
#include <iostream>

using namespace std;

int main()
{
   cout << "float = " << sizeof(float) << " bytes" << endl;
   cout << "double = " << sizeof(double) << " bytes" << endl;
   cout << "long double = " << sizeof(long double) << " bytes" << endl;
   return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы