Search Postgresql Archives

Re: rounding problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Tomasz Ostrowski wrote:
On 2008-05-13 17:29, Justin wrote:
  
Tomasz Ostrowski wrote:
    
On 2008-05-12 20:49, Justin wrote:

  
      
We take (List Price * discount Percent) * Number of Pieces = net
price.
    
        
This is wrong. You should do in Excel:
( price * amount ) * discount
As otherwise any small error in representation of price*discount would
be multiplied by usually high amount.
  
      
Your saying in Excel,  Multiplication is not  Commutativity???  that
sends shudders  down my back
    

On floats it is not in any language. Try this C program:

#include <stdio.h>

int main()
{
        float a = 0.1;
        float b = 10;
        float c = 1000000000;
        float d = a * b;
        printf("%.10f\n", d*c);
        d = b * c;
        printf("%.10f\n", a*d);
        return 0;
}

On my Intel 32-bit I get:
1000000000.0000000000
1000000014.9011611938
  
I ran this on Windows using MSVC

The Result are the same when using float .  But the Ms compiler throws warnings, crying  truncation and rounding problems
1000000000.0000000000
1000000014.9011612000

I change it to double  problem goes away.
1000000000.0000000000
1000000000.0000000000

I have always avoided floating points.  In all the work i have done thus far the problems with floating math would  cause scrap parts or make Quality control worthless. 

Accuracy trumps pretty much every concern around here.


Pozdrawiam
Tometzky
  

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux