Re: rounding problems
От | Justin |
---|---|
Тема | Re: rounding problems |
Дата | |
Msg-id | 4829CFE3.5040803@emproshunts.com обсуждение исходный текст |
Ответ на | rounding problems (Justin <justin@emproshunts.com>) |
Список | pgsql-general |
Tomasz Ostrowski wrote:
I ran this on Windows using MSVCOn 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 backOn 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
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
В списке pgsql-general по дате отправления: