3v4l.org

run code in 300+ PHP versions simultaneously
<?php function give_me_fraction($value) { $smallest_error = null; $closest = null; for ($denominator = 1; $denominator < 20; $denominator += 1) { for ($numerator = 0; $numerator <= $denominator; $numerator += 1) { $calculated = $numerator / $denominator; $error = abs($value - $calculated); if ($smallest_error === null || $error < $smallest_error) { $smallest_error = $error; $closest = [$numerator, $denominator]; } } } return $closest; } $inputs = [ 0.375, 0.333, 0.343, 0.6, 0.61, ]; foreach ($inputs as $input) { $result = give_me_fraction($input); echo "input: $input is about " . $result[0] . '/' . $result[1] . "\n"; }
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
input: 0.375 is about 3/8 input: 0.333 is about 1/3 input: 0.343 is about 1/3 input: 0.6 is about 3/5 input: 0.61 is about 11/18

preferences:
78.8 ms | 1371 KiB | 4 Q