48700 * * @param float $number number to round * @param int $precision negative number for position in number (default -2) * @return float rounded number */ public static function floorp(float $number, int $precision = -2): float { // if precision is requal or larger than the number length, // set precision to length -1 if (abs($precision) >= strlen((string)$number)) { $precision = (strlen((string)$number) - 1) * -1; } $mult = pow(10, $precision); // Can be cached in lookup table return floor($number * $mult) / $mult; } /** * inits input to 0, if value is not numeric * * @param string|int|float $number string or number to check * @return float if not number, then returns 0, else original input */ public static function initNumeric(string|int|float $number): float { if (!is_numeric($number)) { return 0; } else { return (float)$number; } } } // __END__