Edit report at https://bugs.php.net/bug.php?id=64038&edit=1
ID: 64038 Updated by: [email protected] Reported by: nicolas dot giraud at actiane dot com Summary: number_format isn't correct with big numbers Status: Not a bug Type: Bug Package: Unknown/Other Function PHP Version: Irrelevant Block user comment: N Private report: N New Comment: No, it isn't a bug because the function is documented to take a float. So it is behaving exactly as documented. And no, it can't take a mixed type because in order to do the rounding that it supports, it needs to work with a numeric type. Previous Comments: ------------------------------------------------------------------------ [2013-01-21 18:24:58] nicolas dot giraud at actiane dot com Why number_format can't accept a mixed value? Cast into a string and parse it correctly, it would be quicker as using regexp... And when expected result is not the same as actual result, it's a bug, isn't it? ------------------------------------------------------------------------ [2013-01-21 16:18:00] [email protected] Not much we can do about that. number_format() takes a float and you are overflowing a float with your huge value. Since you already have it as a string, you could just throw a regex at it. Something like: preg_replace("/(?<=\d)(?=(\d{3})+(?!\d))/",",",$number); ------------------------------------------------------------------------ [2013-01-21 16:04:34] nicolas dot giraud at actiane dot com Description: ------------ The number_format function don't give the good result with good format, maybe because of cast in float that kills precision. Test script: --------------- <?php $number = '123456789012345678901234567890'; $formatted = number_format($number, 2, '.', ' '); echo $formatted; ?> Expected result: ---------------- 123 456 789 012 345 678 901 234 567 890.00 Actual result: -------------- 123 456 789 012 345 660 285 533 552 640.00 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64038&edit=1
