Floating point numbers (AKA "floats", "doubles" or "real numbers") can be specified using any of the following syntaxes:

```
<?php
```

$a = 1.234;

$b = 1.2e3;

$c = 7E-10;

?>

```
LNUM [0-9]+
```

DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)

EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})

It is quite usual that simple decimal fractions like
*0.1* or *0.7* cannot be
converted into their internal binary counterparts without a
little loss of precision. This can lead to confusing results: for
example, *floor((0.1+0.7)*10)* will usually
return *7* instead of the expected
*8* as the result of the internal representation
really being something like *7.9999999999...*.

This is related to the fact that it is impossible to exactly
express some fractions in decimal notation with a finite number
of digits. For instance, *1/3* in decimal form
becomes *0.3333333. . .*.

So never trust floating number results to the last digit and never compare floating point numbers for equality. If you really need higher precision, you should use the arbitrary precision math functions or gmp functions instead.

For information on when and how strings are converted to floats, see the section titled String conversion to numbers. For values of other types, the conversion is the same as if the value would have been converted to integer and then to float. See the Converting to integer section for more information. As of PHP 5, notice is thrown if you try to convert object to float.