3v4l.org

run code in 300+ PHP versions simultaneously
<?php function mathematical_zeros_after_dot($float) { $float = abs($float); // remove any signs $float -= (int)$float; // remove whole numbers from float if ($float == 0) { return "Rendered as 0"; } $max = 20; for ($x = 0; $x < $max; ++$x) { $float *= 10; if ($float >= 1) { return $x; } } return "$max {exceeded}"; } $floats = [ 25.000000000022, // 10 0.0000062, // 5 0.020320, // 1 .505000, // 0 0, // 0 .000507, // 3 -.002009, // 2 1000, // 0 0.00, // 0 1 // 0 -1.0000000000004000004, // 12 981.0000000000000000000004000004 // 21 ]; foreach ($floats as $float) { echo "(Math) {$float} has " , mathematical_zeros_after_dot($float) , " zero(s)\n"; echo "Barmar {$float} has " , strspn($float, "0", strpos($float, ".")+1) , " zero(s)\n"; echo "(PMA) {$float} has " , preg_match_all('~(?:\.|\G(?!^))0~', $float) , " zero(s)\n"; echo "(PA) {$float} has " , (preg_match('~\.\K0+~', $float, $match) ? strlen($match[0]) : 0) , " zero(s)\n"; }
Output for git.master, git.master_jit, rfc.property-hooks
(Math) 25.000000000022 has 10 zero(s) Barmar 25.000000000022 has 10 zero(s) (PMA) 25.000000000022 has 10 zero(s) (PA) 25.000000000022 has 10 zero(s) (Math) 6.2E-6 has 5 zero(s) Barmar 6.2E-6 has 0 zero(s) (PMA) 6.2E-6 has 0 zero(s) (PA) 6.2E-6 has 0 zero(s) (Math) 0.02032 has 1 zero(s) Barmar 0.02032 has 1 zero(s) (PMA) 0.02032 has 1 zero(s) (PA) 0.02032 has 1 zero(s) (Math) 0.505 has 0 zero(s) Barmar 0.505 has 0 zero(s) (PMA) 0.505 has 0 zero(s) (PA) 0.505 has 0 zero(s) (Math) 0 has Rendered as 0 zero(s) Barmar 0 has 0 zero(s) (PMA) 0 has 0 zero(s) (PA) 0 has 0 zero(s) (Math) 0.000507 has 3 zero(s) Barmar 0.000507 has 3 zero(s) (PMA) 0.000507 has 3 zero(s) (PA) 0.000507 has 3 zero(s) (Math) -0.002009 has 2 zero(s) Barmar -0.002009 has 2 zero(s) (PMA) -0.002009 has 2 zero(s) (PA) -0.002009 has 2 zero(s) (Math) 1000 has Rendered as 0 zero(s) Barmar 1000 has 3 zero(s) (PMA) 1000 has 0 zero(s) (PA) 1000 has 0 zero(s) (Math) 0 has Rendered as 0 zero(s) Barmar 0 has 0 zero(s) (PMA) 0 has 0 zero(s) (PA) 0 has 0 zero(s) (Math) -3.9990233346998E-13 has 12 zero(s) Barmar -3.9990233346998E-13 has 0 zero(s) (PMA) -3.9990233346998E-13 has 0 zero(s) (PA) -3.9990233346998E-13 has 0 zero(s) (Math) 981 has Rendered as 0 zero(s) Barmar 981 has 0 zero(s) (PMA) 981 has 0 zero(s) (PA) 981 has 0 zero(s)

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
106.3 ms | 409 KiB | 5 Q