#39126 [Opn->Bgs]: String->float->String conversion behavior

From: Date: Wed, 11 Oct 2006 15:59:45 +0000
Subject: #39126 [Opn->Bgs]: String->float->String conversion behavior
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-103427@lists.php.net to get a copy of this message
ID: 39126 Updated by: tony2001@php.net Reported By: bobson at rpg dot pl -Status: Open +Status: Bogus Bug Type: Unknown/Other Function Operating System: Linux PHP Version: 5CVS-2006-10-11 (snap) New Comment: 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. Previous Comments: ------------------------------------------------------------------------ [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

« previous php.bugs (#103427) next »