Subject: Compatibility for older PHP
Text: Equivalent for versions before 8.0. Handles the sign of zero for INF results.
<?php
if (!function_exists('fdiv')) {
function fdiv(float $a, float $b): float
{
if (is_nan($a) || is_nan($b)) return NAN;
if ($b != 0.0) return $a / $b;
if ($a == 0.0) return NAN;
$check = function ($v) {
if ($v > 0) return 1;
if ($v < 0) return -1;
return pack('d', (float)$v) === pack('d', 0.0) ? 1 : -1;
};
return ($check($a) === $check($b)) ? INF : -INF;
}
}
?>fdiv
(PHP 8)
fdiv — Divides two numbers, according to IEEE 754
Description
Returns the floating point result of dividing the
num1 by the num2.
If the num2 is zero, then one of INF,
-INF, or NAN will be returned.
Note that in comparisons, NAN will never be equal (==) or identical (===) to
any value, including itself.
Parameters
num1-
The dividend (numerator)
num2-
The divisor
Return Values
The floating point result of
num1/num2
Examples
Example #1 Using fdiv()
<?php
var_dump(fdiv(5.7, 1.3)); // float(4.384615384615385)
var_dump(fdiv(4, 2)); // float(2)
var_dump(fdiv(1.0, 0.0)); // float(INF)
var_dump(fdiv(-1.0, 0.0)); // float(-INF)
var_dump(fdiv(0.0, 0.0)); // float(NAN)
?>
+add a note
User Contributed Notes 1 note
rmaslo at post dot cz ¶
5 months ago