# Numeric Data Types

### Numeric Data Types

You have already seen that PHP assigns a data type to each value and that the numeric data types are integer and double, for whole numbers .

To check whether a value is either of these types, you use the is_float and is_int functions. Likewise, to check for either numeric data type in one operation, you can use is_numeric .

The following example contains a condition that checks whether the value of \$number is an integer:

```\$number = "28";
if (is_int(\$number)) {
echo "\$number is an integer";
}
else {
echo "\$number is not an integer";
}
```

Because the actual declaration of that variable assigns a string valuealbeit one that contains a numberthe condition fails.

Although \$number in the previous example is a string, PHP is flexible enough to allow this value to be used in numeric operations. The following example shows that a string value that contains a number can be incremented and that the resulting value is an integer:

```\$number = "6";
\$number++;
echo "\$number has type " . gettype(\$number);
```

#### Understanding NULLs

The value NULL is a data type all to itselfa value that actually has no value. It has no numeric value, but comparing to an integer value zero evaluates to true:

```\$number = 0;
\$empty=NULL;
if (\$number == \$empty) {
echo "The values are the same";
}
```

 Type Comparisons If you want to check that both the values and data types are the same in a condition, you use the triple equals comparison operator ( === ).

### Numeric Functions

Let's take a look at some of the numeric functions available in PHP.

#### Rounding Numbers

There are three different PHP functions for rounding a decimal number to an integer.

You use ceil or floor to round a number up or down to the nearest integer, respectively. For example, ceil(1.3) returns 2 , whereas floor(6.8) returns 6 .

 Negative Rounding Note the way that negative numbers are rounded. The result of floor(-1.1) is -2 the next lowest whole number numericallynot -1 . Similarly, ceil(-2.5) returns -2 .

To round a value to the nearest whole number, you use round . A fractional part under .5 will be rounded down, whereas .5 or higher will be rounded up. For example, round(1.3) returns 1 , whereas round(1.5) returns 2 .

The round function can also take an optional precision argument. The following example displays a value rounded to two decimal places:

```\$score = 0.535;
echo round(\$score, 2);
```

The value displayed is 0.54 ; the third decimal place being 5 causes the final digit to be rounded up.

You can also use round with a negative precision value to round an integer to a number of significant figures, as in the following example:

```\$distance = 2834;
echo round(\$distance, -2);
```

#### Comparisons

To find the smallest and largest of a group of numbers, you use min and max , respectively. These functions take two or more arguments and return the numerically lowest or highest element in the list, respectively.

This statement will display the larger of the two variables \$a and \$b :

```echo max(\$a, \$b);
```

There is no limit to the number of arguments that can be compared. The following example finds the lowest value from a larger set of values:

```echo min(6, 10, 23, 3, 88, 102, 5, 44);
```

Not surprisingly, the result displayed is 3 .

#### Random Numbers

You use rand to generate a random integer, using your system's built-in random number generator. The rand function optionally takes two arguments that specify the range of numbers from which the random number will be picked.

 Random Limit The constant RAND_MAX contains the highest random number value that can be generated on your system. This value may vary between different platforms.

The following statement picks a random number between 1 and 10 and displays it:

```echo rand(1, 10);
```

You can put this command in a script and run it a few times to see that the number changes each time it is run.

There is really no such thing as a computer-generated random number. In fact, numbers are actually picked from a very long sequence that has very similar properties to true random numbers. To make sure you always start from a different place in this sequence, you have to seed the random number generator by calling the srand function; no arguments are required.

 Random Algorithms PHP includes another random number generator, known as Mersenne Twister, that is considered to produce better random results than rand . To use this algorithm, you use the functions mt_rand and mt_srand .

#### Mathematical Functions

PHP includes many mathematical functions, including trigonometry, logarithms, and number base conversions. As you will rarely need to use these in a web environment, those functions are not covered in this book.

To find out about a function that performs a specific mathematical purpose, refer to the online manual at www.php.net/manual/en/ref.math.php.