3v4l.org

run code in 300+ PHP versions simultaneously
<?php function convertFloat($float) { $float = (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('10'));

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.5.90.0100.08719.43
5.5.80.0200.07319.37
5.5.70.0100.08319.54
5.5.60.0300.05719.54
5.5.50.0170.07719.45
5.5.40.0300.06319.46
5.5.30.0230.07319.27
5.5.20.0170.07319.38
5.5.10.0130.06019.61
5.5.00.0200.08019.41
5.4.250.0130.08019.15
5.4.240.0100.06318.92
5.4.230.0200.08019.14
5.4.220.0200.06018.87
5.4.210.0130.06319.07
5.4.200.0130.08019.24
5.4.190.0270.06719.23
5.4.180.0130.07719.07
5.4.170.0300.06318.96
5.4.160.0230.04719.05
5.4.150.0200.06719.06
5.4.140.0170.06716.50
5.4.130.0170.07716.44
5.4.120.0230.06016.31
5.4.110.0270.06716.46
5.4.100.0230.04316.68
5.4.90.0230.03716.39
5.4.80.0170.04016.48
5.4.70.0300.05716.28
5.4.60.0230.03316.30
5.4.50.0230.07016.36
5.4.40.0200.05716.42
5.4.30.0230.06016.38
5.4.20.0270.03016.38
5.4.10.0270.03316.45
5.4.00.0230.04315.95
5.3.280.0200.06314.62
5.3.270.0200.06314.62
5.3.260.0200.07314.63
5.3.250.0200.07714.67
5.3.240.0230.04714.66
5.3.230.0270.06714.61
5.3.220.0300.06314.73
5.3.210.0270.07314.64
5.3.200.0200.04314.63
5.3.190.0200.04714.58
5.3.180.0270.05314.65
5.3.170.0400.04014.63
5.3.160.0200.04714.59
5.3.150.0230.03314.63
5.3.140.0270.06714.72
5.3.130.0300.05014.46
5.3.120.0270.07014.60
5.3.110.0470.04314.57
5.3.100.0300.04714.05
5.3.90.0330.05014.05
5.3.80.0230.06014.04
5.3.70.0230.03714.10
5.3.60.0130.05314.06
5.3.50.0330.03314.01
5.3.40.0330.06014.02
5.3.30.0230.07013.92
5.3.20.0200.05313.75
5.3.10.0630.04713.62
5.3.00.0100.04313.56

preferences:
259.39 ms | 1394 KiB | 8 Q