From:             info at smartlogic dot nl
Operating system: Linux
PHP version:      4.3.10
PHP Bug Type:     Math related
Bug description:  Weird bug with setlocale and serialize

Description:
------------
After setting the setlocale the decimal point disappears.

This is the same bug as "Bug #14235: serialize and setlocale: inconsistent
behavior" but it still appears in PHP 4.3.10 while the possible solution
indicates:

"This bug has already been fixed in the latest released version of
PHP, which you can download at http://www.php.net/downloads.php

this was fixed in 4.1.x with the switch to a non-sprintf-based serialize
implementation."

Reproduce code:
---------------
#code without setlocale
echo "* WITHOUT setlocale\n\n";
bug_test();

#code with setlocale
echo "* WITH setlocale\n\n";
setlocale (LC_ALL, 'nl_NL');
bug_test();

function bug_test()
{

         $bill_lines[0]["price"]=42.02;

         echo "Original Input:
".$bill_lines[0]["price"]."\n\nArray:\n\n";

         print_r(array_values($bill_lines));

         $encoded=serialize($bill_lines);
         echo "\n\nSerialized array: $encoded \n\n";
         $decoded=unserialize($encoded);

         echo "Ouput after unserialize: ".$decoded[0]["price"]."\n\n";
}


Expected result:
----------------
The output after the setlocale and the unserialize is 42 instead of 42,02
or 42.02

Actual result:
--------------
* WITHOUT setlocal

Original Input: 42.02

Array:

Array
(
    [0] => Array
        (
            [price] => 42.02
        )

)


Serialized array:
a:1:{i:0;a:1:{s:5:"price";d:42.02000000000000312638803734444081783294677734375;}}


Ouput after unserialize: 42.02

* WITH setlocale

Original Input: 42,02

Array:

Array
(
    [0] => Array
        (
            [price] => 42,02
        )

)


Serialized array:
a:1:{i:0;a:1:{s:5:"price";d:42.02000000000000312638803734444081783294677734375;}}


Ouput after unserialize: 42

-- 
Edit bug report at http://bugs.php.net/?id=31366&edit=1
-- 
Try a CVS snapshot (php4):   http://bugs.php.net/fix.php?id=31366&r=trysnapshot4
Try a CVS snapshot (php5.0): 
http://bugs.php.net/fix.php?id=31366&r=trysnapshot50
Try a CVS snapshot (php5.1): 
http://bugs.php.net/fix.php?id=31366&r=trysnapshot51
Fixed in CVS:                http://bugs.php.net/fix.php?id=31366&r=fixedcvs
Fixed in release:            http://bugs.php.net/fix.php?id=31366&r=alreadyfixed
Need backtrace:              http://bugs.php.net/fix.php?id=31366&r=needtrace
Need Reproduce Script:       http://bugs.php.net/fix.php?id=31366&r=needscript
Try newer version:           http://bugs.php.net/fix.php?id=31366&r=oldversion
Not developer issue:         http://bugs.php.net/fix.php?id=31366&r=support
Expected behavior:           http://bugs.php.net/fix.php?id=31366&r=notwrong
Not enough info:             
http://bugs.php.net/fix.php?id=31366&r=notenoughinfo
Submitted twice:             
http://bugs.php.net/fix.php?id=31366&r=submittedtwice
register_globals:            http://bugs.php.net/fix.php?id=31366&r=globals
PHP 3 support discontinued:  http://bugs.php.net/fix.php?id=31366&r=php3
Daylight Savings:            http://bugs.php.net/fix.php?id=31366&r=dst
IIS Stability:               http://bugs.php.net/fix.php?id=31366&r=isapi
Install GNU Sed:             http://bugs.php.net/fix.php?id=31366&r=gnused
Floating point limitations:  http://bugs.php.net/fix.php?id=31366&r=float
No Zend Extensions:          http://bugs.php.net/fix.php?id=31366&r=nozend
MySQL Configuration Error:   http://bugs.php.net/fix.php?id=31366&r=mysqlcfg

Reply via email to