# Constantes pré-definidas

As constantes abaixo estão sempre disponíveis como parte do núcleo do PHP.

Constantes matemáticas
`M_PI` 3.14159265358979323846 Pi
`M_E` 2.7182818284590452354 e - número neperiano
`M_LOG2E` 1.4426950408889634074 logaritmo de e na base 2
`M_LOG10E` 0.43429448190325182765 logaritmo de e na base 10
`M_LN2` 0.69314718055994530942 logaritmo neperiano de 2
`M_LN10` 2.30258509299404568402 logaritmo neperiano de 10
`M_PI_2` 1.57079632679489661923 pi/2
`M_PI_4` 0.78539816339744830962 pi/4
`M_1_PI` 0.31830988618379067154 1/pi
`M_2_PI` 0.63661977236758134308 2/pi
`M_SQRTPI` 1.77245385090551602729 raiz(pi)
`M_2_SQRTPI` 1.12837916709551257390 2/raiz(pi)
`M_SQRT2` 1.41421356237309504880 raiz(2)
`M_SQRT3` 1.73205080756887729352 raiz(3)
`M_SQRT1_2` 0.70710678118654752440 1/raiz(2)
`M_LNPI` 1.14472988584940017414 logaritmo neperiano de pi
`M_EULER` 0.57721566490153286061 Constante de Euler
`PHP_ROUND_HALF_UP` 1 Arredonda 0.5 para cima
`PHP_ROUND_HALF_DOWN` 2 Arredonte 0.5 para baixo
`PHP_ROUND_HALF_EVEN` 3 Arredonda 0.5 para números pares
`PHP_ROUND_HALF_ODD` 4 Arredonda 0.5 para números ímpares
`NAN` NAN (como um float) Not A Number - um não-número
`INF` INF (como um float) Infinito

### User Contributed Notes 7 notes

35
md2perpe at gmail dot com
8 years ago
`I just learnt of INF today and found out that it can be used in comparisons: echo 5000 < INF ? 'yes' : 'no'; // outputs 'yes' echo INF < INF ? 'yes' : 'no'; // outputs 'no' echo INF <= INF ? 'yes' : 'no'; // outputs 'yes' echo INF == INF ? 'yes' : 'no'; // outputs 'yes'You can also take its negative: echo -INF < -5000 ? 'yes' : 'no'; // outputs 'yes'Division by INF is allowed: echo 1/INF; // outputs '0'`
17
Hayley Watson
11 years ago
`There are also the predefined PHP_INT_MAX and PHP_INT_SIZE constants, that describe the range of possible integer values.`
pemapmodder1970 at gmail dot com
7 years ago
`Although INF can be used for comparison against normal numbers and as a directed number, and behaves as reciprocal of zero, it is not like limit INF tends to infinity. These operations do not work:<?phpvar_dump(INF / INF); // float(NAN)var_dump(INF - INF); // float(NAN)?>However, it works with arc-tangent:<?phpvar_dump(atan(INF) / M_PI); // float(0.5)var_dump(atan2(INF, INF) / M_PI); // float(0.25)var_dump(atan2(1, INF) / M_PI); // float(0)?>`
Hayley Watson
6 years ago
`From PHP 7.2.0, the PHP_FLOAT_* constants are provided to describe the properties of floating point numbers that can be stored; PHP_FLOAT_MAX, for example, is analogous to PHP_INT_MAX and represents the largest possible floating-point number.`
br at ndon dot co
2 years ago
`The constants PHP_ROUND_HALF_UPPHP_ROUND_HALF_DOWNPHP_ROUND_HALF_EVENPHP_ROUND_HALF_ODDare constants intended to be used as the 3rd parameter in the math function round() https://www.php.net/manual/en/function.round`
steve at websmithery dot co dot uk
6 years ago
`Another observation on INF.Division by zero results in INF:<?phpvar_dump(1/0); // float(INF)?>BUT a 'Division by zero' warning is issued.`
-2
Kira-Bianca dot Hinz at web dot de
3 years ago
`Caution when using variables with the value NAN (or directly NAN, which would not be logical) if the value is converted in any form (integer, string or other non-float format)!In that case, NAN is converted to 0. (e.g. as an index in an array, argument of a method that takes it as a non-float parameter, etc.). This bug has been reported several times, but is still present in the current version PHP 7.3.15.Example 1:\$array = [0 => 'zero', 1 => 'one', 2 => 'two'];\$index = NAN;echo \$array[\$index]; // echo 'zero' and not as axcepted throws an exception or at least a warning 'undefined offset NAN ...'Example 2:function f((int) \$p) { return \$p; }echo f(NAN); // echo 0 because the argument (NAN) has been converted to integer (0)It would have to be checked in both cases explicitly for is_nan():1: if(is_nan(\$index)){ <throw Exception> }else{ echo \$array[\$index]; };2: function f(\$p){ // without converting!!! if(is_nan(\$p)){ <throw Exception> }else{ return (int)\$p; // actually a correct conversion to Integer would have to be checked because the parser does not check this here. }; }`