ID:               31963
 Updated by:       [EMAIL PROTECTED]
 Reported By:      wulff at fyens dot dk
-Status:           Open
+Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: Linux
 PHP Version:      4.3.10
 New Comment:

THe reason why we introduced this zend_strtod.c was exactly because of
this reason. This is not a bug, but expected and wanted behavior.


Previous Comments:
------------------------------------------------------------------------

[2005-02-14 09:42:15] wulff at fyens dot dk

Description:
------------
The Zend engine does not respect the current locale when it converts
from a string to a float.

Zend assumes that all numbers have a "." as a decimal seperator. This
is not the case in many parts of the world.

Included in this bug is a bit of "non-portable" code that solves the
problem. This may not be the most elegant solution but it illustrates
what needs to be fixed. 

Here are my changes to Zend/zend_strtod.c at line 1249:

//      CONST char decimal_point = ',';

        char decimal_point = '.';
        #ifdef HAVE_LOCALE_H
        struct lconv* current_locale;
        current_locale=localeconv();
        decimal_point=(*(*current_locale).decimal_point);
        #endif


Reproduce code:
---------------
<?php
  setLocale(LC_ALL,"de_DE");
  echo ("2,2"*2)."\n";
?>


Expected result:
----------------
The result one would expect if PHP respected locale:
4,4



Actual result:
--------------
What you get is:
4



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31963&edit=1

Reply via email to