ID: 24591 Updated by: [EMAIL PROTECTED] Reported By: arnarb at oddi dot is -Status: Open +Status: Verified Bug Type: Scripting Engine problem Operating System: Linux 2.4.18 -PHP Version: 4.3.3RC1 +PHP Version: 5.0.0b2-dev, 4.3.3RC2-dev New Comment:
<?php printf("%.3f\n", 3.233); var_dump(sprintf("%.3f", 3.233) + 1); setlocale(LC_ALL, "is_IS"); printf("%.3f\n", 3.233); var_dump(sprintf("%.3f", 3.233) + 1); ?> Output: 3.233 float(4.233) 3,233 int(4) Previous Comments: ------------------------------------------------------------------------ [2003-07-10 10:58:33] arnarb at oddi dot is Tried upgrading to 4.3.3RC1, still the same. Therefore bumping the version tag on this report. ------------------------------------------------------------------------ [2003-07-10 10:52:19] arnarb at oddi dot is Description: ------------ When strings containing numbers in the locale format, and the locale uses , as the decimal seperator, converting the string to a float cuts off at the , and returns the integer part. This was addressed in bugs #17105, #17815 and others. Those reports were closed and the problem was claimed to be fixed in CVS as of November 2002 by iliaa and sniper. This bug is however still present in 4.3.2, as the reproduce code demonstrates. A quick look indicated that libc's strtod was being used for the conversion, I verified that it is working on my platform. Reproduce code: --------------- <?php printf("%.3f\n", 3.233); print sprintf("%.3f", 3.233)+1; print "\n"; setlocale(LC_ALL, "is_IS"); printf("%.3f\n", 3.233); print sprintf("%.3f", 3.233)+1; print "\n"; ?> Expected result: ---------------- 3.233 4.233 3,233 4,233 Actual result: -------------- 3.233 4.233 3,233 4 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24591&edit=1