Yep, that is why MySQL for instance has the data type NUMERIC/DECIMAL
as opposed to FLOAT and DOUBLE (See:
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html)
Also, a lot of programming languages have special datatypes used for
storing financial values as they are particularly nasty for rounding
errors. Never seen a 0.01 cent difference when Adding a number of
items on an invoice programmatically?

Walter

On Sun, Sep 5, 2010 at 12:37, Aizuddin a.k.a ak47suk1
<[email protected]> wrote:
> Hmmm...
>
> Tested on my lappy, AMD Turion64 X2, Ubuntu Lucid Lynx 64-bit.
>
> OpenOffice Calc:
>
> Input: =161001.165-100000.009-60000.7-1000.456
> Output: 0.00000000000557065504835919
>
> Input: =161001.165+(-100000.009-60000.7-1000.456)
> Output: 0
>
> Input: =((161001.165-100000.009)-60000.7)-1000.456
> Output: 0.00000000000557065504835919
>
> MySQL:
>
> mysql>
> mysql> CREATE TABLE `sumtest` (
>     ->
>     -> `numbers` double NOT NULL,
>     ->
>     -> `group` varchar(3) NOT NULL DEFAULT 'all'
>     ->
>     -> );
> Query OK, 0 rows affected (0.14 sec)
>
> mysql>
> mysql>
> mysql>
> mysql> INSERT INTO `sumtest` (`numbers`, `group`) VALUES
>     ->
>     -> (161001.165, 'all'),
>     ->
>     -> (-100000.009, 'all'),
>     ->
>     -> (-60000.7, 'all'),
>     ->
>     -> (-1000.456, 'all');
> Query OK, 4 rows affected (0.10 sec)
> Records: 4  Duplicates: 0  Warnings: 0
>
> mysql>
> mysql>
> mysql>
> mysql> SELECT SUM( `numbers` )
>     ->
>     -> FROM `sumtest`
>     ->
>     -> WHERE `group` = 'all'
>     ->
>     -> GROUP BY `group`;
> +----------------------+
> | SUM( `numbers` )     |
> +----------------------+
> | 5.57065504835919e-12 |
> +----------------------+
> 1 row in set (0.04 sec)
>
>
> 2010/9/5 Raja Iskandar Shah <[email protected]>
>>
>> cool ;-)
>>
>> i wonder if the bug is identical across all 32bit and 64bit cpu ? or intel
>> treats them differently than amd, than sunsparc, than arm ?
>>
>>
>> On Sun, Sep 5, 2010 at 10:55 AM, Walter Heck - OlinData.com
>> <[email protected]> wrote:
>>>
>>> Usually the programming languages used for those kind of programs have
>>> their own datatypes for ultra-high precision floating points. A 32 or
>>> 64 bit datatype is not enough for them anyway. They use all kinds of
>>> tricks/smart-assing to get around floating point rounding errors.
>>>
>>> Walter
>>
>> --
>> Join Open Source Developers Club Malaysia http://www.osdc.my/
>>
>> Facebook Fan page
>>
>> http://www.facebook.com/group.php?gid=98685301577
>>
>> http://www.facebook.com/OSDC.my
>>
>> You received this message because you are subscribed to the Google
>>
>> Groups "OSDC.my Mailing List" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/osdcmy-list?hl=en
>
> --
> Join Open Source Developers Club Malaysia http://www.osdc.my/
>
> Facebook Fan page
>
> http://www.facebook.com/group.php?gid=98685301577
>
> http://www.facebook.com/OSDC.my
>
> You received this message because you are subscribed to the Google
>
> Groups "OSDC.my Mailing List" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/osdcmy-list?hl=en



-- 
Walter Heck
Founder @ OlinData (http://olindata.com)

-- 
Join Open Source Developers Club Malaysia http://www.osdc.my/

Facebook Fan page

http://www.facebook.com/group.php?gid=98685301577

http://www.facebook.com/OSDC.my

You received this message because you are subscribed to the Google

Groups "OSDC.my Mailing List" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/osdcmy-list?hl=en

Kirim email ke