ID: 39126 User updated by: bobson at rpg dot pl Reported By: bobson at rpg dot pl Status: Bogus Bug Type: Unknown/Other Function Operating System: Linux PHP Version: 5CVS-2006-10-11 (snap) New Comment:
Yes and no in fact. Using the same decimal separator on all platform is nice but- When you using input from browser (POST) in Poland you will get "," as decimal separator when someone type from numeric keypad. Second: Try to read dbase file with numeric(4,2) field and float value in it. Set locale to "pl_PL" first. Because of float->string translation using locale you will never get float from that numeric (because dbase reading procedure make float->string->float convert. float->string using locale. string->float without using locale. It makes value truncated to integer part of it). Previous Comments: ------------------------------------------------------------------------ [2006-10-11 15:59:45] [EMAIL PROTECTED] The output may differe depending on your localem but the input must always be the same, otherwise your script would not work on servers with different locales. ------------------------------------------------------------------------ [2006-10-11 15:32:13] bobson at rpg dot pl Description: ------------ When converting to float from string, its always use "." as a decimal separator, but echo shows decimal separator using locale definition. Because of that there's a problem eg. in dbase function on numeric(float) fields. Reproduce code: --------------- setlocale(LC_ALL,"pl_PL"); echo '1.2*1='; echo "1.2"*1; //produce 1.2*1=1,2 echo '1,2*1='; echo "1,2"*1; //produce 1,2*1=1 <- this was expected to produce 1,2 float on pl_PL (in PL decimal separator is ",") setlocale(LC_ALL,"en_EN"); echo '1.2*1='; echo "1.2"*1; //produce 1.2*1=1.2 echo '1,2*1='; echo "1,2"*1; //produce 1,2*1=1 <- correct on en_EN //the most ugly examlpe setlocale(LC_ALL,"pl_PL"); echo (("1.2"*1)."")*1; //produce 1 echo (("1,2"*1)."")*1; //also produce 1 Expected result: ---------------- on pl_PL 1 1,2 on en_EN 1.2 1 last one example code: 1 1,2 Actual result: -------------- on pl_PL 1,2 1 on en_EN 1.2 1 last one example code: 1 1 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39126&edit=1