3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php function convertFloat($float) { $float = (string)$float; $expPos = strpos($float, array('E', 'e')); var_dump($float, $expPos); if ($expPos === false) { return $float; } $beforeDot = '0'; // Well, fuck you my English. $afterDot = '0'; // ^^ $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)); } if ($exp < 0) { $len = strlen($afterDot); if ($len <= $exp) { return $beforeDot.$afterDot; } } else { $len = strlen($afterDot); return $beforeDot.($afterDot !== '0' ? $afterDot : '').str_repeat('0', $exp - $len).'i'; } var_dump($beforeDot, $afterDot); } convertFloat('1.11111111111111111111111111111111111111111111111111111111111e+60');
Output for 5.3.1 - 7.1.0
Warning: strpos(): needle is not a string or an integer in /in/7kF58 on line 5 string(65) "1.11111111111111111111111111111111111111111111111111111111111e+60" bool(false)
Output for 4.3.0 - 5.3.0
string(65) "1.11111111111111111111111111111111111111111111111111111111111e+60" bool(false)