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 |