2014-10-28 3 views
1

Диапазон значений поплавка 3.4e-38 до 3.4e + 38. Поэтому переменные float не должны сохранять отрицательные значения. Но float-переменные сохраняют отрицательные значения. Пожалуйста, объясните мне.Как переменная float хранит отрицательные значения, которые не находятся в их диапазоне в C++?

#include<iostream.h> 
void main() 
{ float ab=-3.456; 
cout<<ab; } 

Выход: -3,456

Спасибо заранее.

+0

Числа с плавающей точкой имеют знак. Прочитайте http://floating-point-gui.de/ –

+0

, в настоящее время нет общего формата с плавающей запятой только с положительной позицией –

ответ

1

Диапазон для одинарной точности поплавка 2 -126 ≈ 1,18 × 10 -38 к (2-2 -23) × 2 ≈ 3,4 × 10 38 для положительных значений и похоже, но обратный для отрицательных значений: -3,4 × 10 38 до -1,18 × 10 -38 , поскольку IEEE-754 использует формат вход величины, где бит знак магазин отдельно

подробнее об этом here

1

Это самые большие и маленькие положительные значения.

Во внутреннем представлении, есть 1 бит для знака (S), 8 битов для экспоненты (E), и 23 бита для фракции (F). Биты отображаются с фракцией в бит 0 22, показатель степени в бит 23 до 30 бит, а знак в бите 31.

More

0

В основном плавать состоит из трех чисел

significant * base^exponent 

Значительная часть и экспоненциальная часть могут иметь свой отдельный знак. Так на самом деле всплывают диапазон:

float 32 bits -3.4E+38 to +3.4E+38 about 7 decimal digits 

Floating point on wiki

IEEE standard

Смежные вопросы