3v4l.org

run code in 300+ PHP versions simultaneously
<?php function convertFloat($float) { $float = strtolower((string)$float); $expPos = strpos($float, 'e'); if ($expPos === false) { return $float; } $beforeDot = '0'; // Well, fuck you my English. $afterDot = ''; // ^^ $numberWithoutPrecision = substr($float, 0, $expPos); $exp = (int)substr($float, $expPos + 1, strlen($float)); if ($exp === 0) { return '1'; } $dotPos = strpos($numberWithoutPrecision, '.'); if ($dotPos === false) { $beforeDot = $numberWithoutPrecision; } else { $beforeDot = substr($numberWithoutPrecision, 0, $dotPos); $afterDot = substr($numberWithoutPrecision, $dotPos + 1, strlen($numberWithoutPrecision)); $afterDot = rtrim($afterDot, '0'); } $beforeDot = ltrim($beforeDot, '0'); if ($exp < 0) { $exp = -$exp; $len = strlen($beforeDot); if ($len <= $exp) { return '0.'.str_repeat('0', $exp - $len).$beforeDot.$afterDot; } else { return substr($beforeDot, 0, $len - $exp).'.'.substr($beforeDot, $len - $exp, $len).$afterDot; } } else { $len = strlen($afterDot); if ($len <= $exp) { return $beforeDot.$afterDot.str_repeat('0', $exp - $len).'i'; } else { return $beforeDot.substr($afterDot, 0, $exp).'.'.substr($afterDot, $exp, $len); } } } //var_dump(convertFloat('11111111111111111111111111111111111111111111111111111111111112e-60')); var_dump(convertFloat('+1.'), var_dump((string)+1.);

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.250.0100.05018.66
5.4.240.0130.05019.00
5.4.230.0070.05318.96
5.4.220.0170.05018.77
5.4.210.0130.05018.94
5.4.200.0100.07318.80
5.4.190.0070.05319.09
5.4.180.0100.06718.62
5.4.170.0000.06318.75
5.4.160.0070.05018.89
5.4.150.0130.05018.98
5.4.140.0170.04716.41
5.4.130.0030.05016.44
5.4.120.0100.04716.50
5.4.110.0070.07316.62
5.4.100.0130.04316.54
5.4.90.0130.04316.47
5.4.80.0100.04716.62
5.4.70.0100.05016.38
5.4.60.0170.04016.48
5.4.50.0130.04716.46
5.4.40.0130.04716.41
5.4.30.0130.04316.39
5.4.20.0100.05016.48
5.4.10.0170.04716.36
5.4.00.0130.04715.98
5.3.280.0070.05014.44
5.3.270.0030.05714.59
5.3.260.0100.07014.64
5.3.250.0130.04714.86
5.3.240.0130.05014.60
5.3.230.0130.04714.75
5.3.220.0100.04714.77
5.3.210.0100.05314.76
5.3.200.0030.05014.60
5.3.190.0170.06314.72
5.3.180.0130.04714.41
5.3.170.0070.05014.63
5.3.160.0170.04314.74
5.3.150.0130.04314.64
5.3.140.0000.05314.59
5.3.130.0030.05714.79
5.3.120.0070.05314.55
5.3.110.0100.05014.65
5.3.100.0100.06314.16
5.3.90.0230.05013.87
5.3.80.0030.05314.00
5.3.70.0070.05014.04
5.3.60.0030.05314.11
5.3.50.0000.07714.04
5.3.40.0100.04713.98
5.3.30.0130.04313.99
5.3.20.0100.04313.79
5.3.10.0030.05313.89
5.3.00.0070.05013.65

preferences:
139.93 ms | 1394 KiB | 7 Q