Numbers can be represented using Integer data types in C++. But some numbers like real numbers cannot be stored like integers because there is a decimal part associated with the real numbers.
C++ programming language has and data type to represent real numbers.
A real number is declared using keyword – or . The main difference between and is the size. The size of float is bytes or bits, where the size of type is bytes or bits. There is a long version of the data type which is about bytes or bytes in size.
Data Types | Byte Size | Bit Size (1 byte = 8 bits) |
float | 4 | 32 |
double | 8 | 64 |
long double | 12 or 16 | 96 or 128 |
Computer Representation of Floating Point
The real numbers are represented in scientific notation (or exponential notation) because it is easier to perform arithmetic involving real values.
The Exponential Notation
The exponential notation has two parts – and . The equation to represent the numbers in is shown below.
\begin{aligned}&\pm M * 10^E\\ \\ &where \\ \\ &0 \leq M \leq 10\end{aligned}
For example, suppose you want to represent in exponential notation then it becomes
\begin{aligned}&2.0 \cdot 10^4\\ \\&where \\ \\ &0 \leq 2 \leq 10\end{aligned}
If you want to represent in scientific notation, then
\begin{aligned}&1.33 \cdot 10^3\\ \\&where \\ \\&0 \leq 1.33 \leq 10\end{aligned}
The number can be represented as
\begin{aligned}&5.454 \cdot 10^{-5} \\ \\&where\\ \\&0 \leq 5.454 \leq 10\end{aligned}
The table isolates the different parts of the examples given above.
Mantissa | Exponent | E-notation |
2.0 | 4 | 2.0E4 |
1.33 | 3 | 1.33E3 |
5.454 | -5 | 5.454E-5 |
The above notation is suitable for human, but the computer needs a binary representation of numbers and that too, in format.
Since we already know that bytes or bit is required to store a floating point number in a computer. The number is divided into parts – bits for the mantissa, bit for sign, and bit for exponents.
The sign bit means positive number and means a negative number.
The exponent can store values between to .
The computer representation of exponential notation is:
\begin{aligned}&(b_0. b_1 b_2 b_3 \cdots ) \cdot 2^E\\ \\&where \\ \\&b_{0} = 1\end{aligned}
This representation is called the .
Declaring Floating Type and Double Type
Declaring a floating type and double data type variabe in a C program is similar.
float PI 3.14;
double radius 5,33;
There is little difference between and though they are represented in the same way in a computer. The double precision is longer than the float in terms of allowing the real part of a floating number.
\begin{aligned}&3.244440\\ \\&3.244440000000000 \hspace{3px}(double \hspace{3px} is \hspace{3px} has \hspace{3px} longer \hspace{3px} decimal \hspace{3px} part )\end{aligned}