PHP Numbers & Math

Integers and floats

PHP
<?php
  $count = 42;        // int
  $price = 1250.75;   // float

  var_dump(PHP_INT_MAX); // largest int on this system

Arithmetic

PHP
<?php
  echo 10 + 3;   // 13
  echo 10 - 3;   // 7
  echo 10 * 3;   // 30
  echo 10 / 3;   // 3.3333333333333
  echo 10 % 3;   // 1   — remainder (modulo)
  echo 10 ** 3;  // 1000 — exponent
  echo intdiv(10, 3); // 3 — integer division

Math functions

PHP
<?php
  echo abs(-5);        // 5
  echo round(3.7);     // 4
  echo round(3.14159, 2); // 3.14
  echo floor(3.9);     // 3  — always down
  echo ceil(3.1);      // 4  — always up
  echo sqrt(16);       // 4
  echo pow(2, 10);     // 1024
  echo max(3, 9, 2);   // 9
  echo min([3, 9, 2]); // 2  — works on arrays too
  echo rand(1, 100);   // random int
  echo pi();           // 3.1415926535898

Floating-point precision

Floats cannot represent every decimal exactly — this is true in every language, not just PHP:

PHP
<?php
  var_dump(0.1 + 0.2 == 0.3);  // false!
  var_dump(0.1 + 0.2);          // float(0.30000000000000004)

Compare floats with a tolerance instead:

PHP
<?php
  if (abs((0.1 + 0.2) - 0.3) < 0.00001) {
      echo "close enough";
  }

For money, never use floats. Store paisa as integers, or use strings with bcadd()/bcmul() from the BCMath extension.

Checking numeric strings

PHP
<?php
  var_dump(is_numeric("42"));     // true
  var_dump(is_numeric("42abc"));  // false
  var_dump(is_numeric("3.14"));   // true