Skip to content

Latest commit

 

History

History
101 lines (72 loc) · 2.16 KB

numbers.md

File metadata and controls

101 lines (72 loc) · 2.16 KB

Numbers

Esi\Utility\Numbers

  • inside(float | int $number, float | int $min, float | int $max): bool;
  • outside(float | int $number, float | int $min, float | int $max): bool;
  • random(int $min, int $max): int;
  • ordinal(int $number): string;
  • sizeFormat(int $bytes, int $precision = 0, string $standard = 'binary'): string;

inside

Determines if a number is inside the min and max.

use Esi\Utility\Numbers;

var_dump(Numbers::inside(25, 24, 26)); // bool (true)
var_dump(Numbers::inside(25, 26, 27)); // bool (false)

var_dump(Numbers::inside(25.0, 24.0, 26.0)); // bool (true)
var_dump(Numbers::inside(25.0, 26.0, 27.0)); // bool (false)

outside

Determines if a number is outside the min and max.

use Esi\Utility\Numbers;

var_dump(Numbers::outside(23, 24, 26)); // bool (true)
var_dump(Numbers::outside(25, 24, 26)); // bool (false)

var_dump(Numbers::outside(23.0, 24.0, 26.0)); // bool (true)
var_dump(Numbers::outside(25.0, 24.0, 26.0)); // bool (false)

random

Generate a cryptographically secure pseudo-random integer.

use Esi\Utility\Numbers;

$int = Numbers::random(100, 250); // >= 100 <= 250
var_dump($int >= 100); // bool (true)
var_dump($int <= 250); // bool (true)

ordinal

Retrieve the ordinal version of a number. Basically, it will append th, st, nd, or rd based on what the number ends with.

use Esi\Utility\Numbers;

echo Numbers::ordinal(1); // 1st
echo Numbers::ordinal(102); // 102nd
echo Numbers::ordinal(143); // 143rd
echo Numbers::ordinal(1_004); // 1004th

sizeFormat

Format bytes to a human-readable format.

use Esi\Utility\Numbers;

$sizes = [
    512 => 0,
    2_048 => 1,
    25_151_251 => 2,
    19_971_597_926 => 2,
    2_748_779_069_440 => 1,
    2_748_779_069_440 * 1_024 => 1,
    2_748_779_069_440 * (1_024 * 1_024) => 1,
];

$readable = [];

foreach ($sizes as $size => $precision) {
    $readable[] = Numbers::sizeFormat($size, $precision);
}

print_r($readable);

/*
Array (
    0 => '512 B',
    1 => '2.0 KiB',
    2 => '23.99 MiB',
    3 => '18.60 GiB'
    4 => '2.5 TiB',
    5 => '2.5 PiB',
    6 => '2.5 EiB',
)