  Course Content

Introduction to C++

##   Numerical Data Types

When working with numerical data, C++ offers a variety of data types such as `int`, `float`, `double`, `short` and others. Let's explore the distinctions between these types and determine which ones are appropriate to use. We can split the numerical data types into two groups:

• Data types for whole numbers (e.g., `12`);
• Data types for floating point numbers (e.g., `0.12`).

## Whole numbers

Integer data types are the most commonly used for whole numbers. As you learned in the previous chapter, the `int` data type can hold values within the range of -2,147,483,648 to 2,147,483,647.  main.cpp  That happens because when you declare an `int` variable, it allocates precisely 4 bytes of your PC's memory. And numbers above 2147483647(or below -2147483648) do not fit inside those 4 bytes. Luckily, other data types available can allocate you more(or less) space for your needs. Here is the table:

 Data Type Range Size short -32,768 to 32,767 2 bytes int -2,147,483,648 to 2,147,483,647 4 bytes long -9223372036854775808 to 9223372036854775807 8 bytes

So you can use `long` to store large numbers (e.g., World's population). You can also use `short` if you are sure your number will not exceed the -32,768 to 32,767 range(e.g., storing a user's age). Using `short` will take up less space.  main.cpp  Note

Be careful with the data type you choose. If the range of a type is exceeded, the C++ compiler will not tell you this, and you will get an unexpected value without knowing something is wrong.

## Floating point numbers

The data types above are designed to store whole numbers. If we tried to assign `1.6` to one of those, here is what we would get:  main.cpp  The `int` type ignores the decimal part of a number. The same story with `short` or `long`. To store the floating point(decimal) numbers, we should use either `float` or `double` data type.

 Data Type Precision Size float 7 decimal digits 4 bytes double 15 decimal digits 8 bytes

Here is an example of using `double` to store `1.6`.  main.cpp  Note

Since the `float` type only has a precision of 7 digits, the number `123.456789` is already out of its range. It can lead to inaccurate results(as shown in the example below). So it is better to use `double` by default unless you are sure `float`'s precision is enough.  main.cpp  Obviously, you can use `float` or `double` to store whole numbers since those are decimal numbers with a decimal part equal to 0. However, as a good practice, if a variable stores values that can only be whole numbers (e.g., population or likes), `short`/`int`/`long` should be used.  main.cpp    #### Suppose you want to keep track of vehicle count. Choose the data type for each of the situations:

Number of vehicles in a family:
_ _ _

Number of vehicles on a car-selling site:
_ _ _

Number of vehicles in the world:
_ _ _

Click or drag`n`drop items and fill in the blanks  short  int  long  char  Everything was clear?

Section 2. Chapter 3