# Understanding Float and Double Variables in C

###### C Basic Concepts

In this lesson, we will learn the basics of Float and Double variables in C programming and how they differ in precision and storage capacity for decimal numbers.

## Float and Double Type Variables

As described before, an integer variable value has no fractional (decimal)
part. C uses two types of variables **float** and **double** that can store a
decimal number. They each offer a different level of precision (ability to store numbers
after the decimal point) as outlined below.

**float -**A float data type variable can store about a maximum of 6 digits of precision. The memory capacity of the float data type is 4 bytes and can store a number between range 1.2E-38 to 3.4E+38.**double -**A double data type variable can store about a maximum of 15 digits of precision. The memory capacity of the double data type is 8 bytes and can store a number between range 2.3E-308 to 1.7E+308.

**Note: **The main difference between float and double data type is their memory capacity, precision and number range as outlined above.

### Syntax of Declaring Float and Double Variable in C

```
float variable_name;
double variable_name;
```

Here **float** is used for declaring **Float** data type and
**double** is used for declaring **Double** data type. **variable_name** is the name of
variable (you can use any name of your choice for example: a, b, c, alpha, etc.) and **;**
is used for line terminator (end of line).

Now let's see some examples for more understanding.

#### Example 1

Declare a float variable **x** and a double variable **y**

```
float x;
double y;
```

#### Example 2

Declare a float variable **x** to assign decimal number 18.286 and
a double variable **y** to assign a decimal number 16722.02675585.

```
float x = 18.286;
double y = 16722.02675585;
```

#### Example 3

Declare 3 float variables **a**, **b**, **c** and 3 double
variable **x**, **y**, **z**

```
float a, b, c;
double x, y, z;
```

#### Example 4

Declare 3 float variables **a**, **b** and **c** to assign
the float value 41.23, 87.335 and 62.471 respectively after that declare 3 double
variables **x**, **y** and **z** to assign
the double value 19.2347, 22.20 and 54.458691027 respectively

```
float a=41.23, b=87.335, c=62.471;
double x=19.2347, y=22.20, z=54.458691027;
```

#### Example 5

Declare a float variable **x** and double variable **y** and
assign the float value 12.365 and double value 79.2358
in the separate line respectively.

```
float x;
double y;
x = 12.365;
y = 79.2358;
```

#### Example 6

Declare a float variable **x** and double variable **y** and
assign the float value 7.18 and double value 11.62254
after that change their values to 44.23 and 67.48612 respectively.

```
float x=7.18;
double y=11.62254;
x = 44.23; // now the new value of x is 44.23
y = 67.48612; // now the new value of y is 67.48612
```

**Note:** If you want to store an integer number in a **float**
or **double** type variable then you can do so as because **int** is smaller than
**float** and **float** is smaller than **double** in terms of storing capacity
of numbers. So an integer value can be stored in **float** type variable and a **float**
value can be stored in a **double** type variable. Let's see the example given below.

```
float x=58;
double y=76;
```

The integer value 58 will be converted into **float** data type
value and will be stored as 58.0. Similarly the integer value 76 will be converted into
**double** data type value and will be stored as 76.0.

## Test Your Knowledge

Attempt the multiple choice quiz to check if the lesson is adequately clear to you.