L schrieb: >>> If you do on a hand calculator: >>> >>> 1/3 >>> >>> ... you will see: >>> >>> 0.33333333333 >>> >>> If you multiply again with 3, you will see: >>> >>> 0.99999999999 >>> >>> ... and not 1.00000000000. > > > On my electronic/digital calculator I see '1'
They calculate usually internally with more digits than they display or they even might use bcd numbers which makes the program working with fpc as well: // // Hm. This is really weird. I assign 1 to x, which is of double type. // Then I add 0.4 to the x, then I subtract 0.4 from x. // So, now I should have 1 in x. But when I compare x with 1, I get // wrong evaluation of "if x = 1 then" statement ! // // I tried this on two different Windows Intel machines and it was wrong. // I tried it also on Mac with PowerPC processor and it was also wrong. // (Both Delphi & FPC compilers) // // [EMAIL PROTECTED] // program floating_error_1_4 ; uses fmtbcd; {$APPTYPE CONSOLE } var x : TBCD; BEGIN x:=1; x:=x + 0.4; x:=x - 0.4; if x = 1.0 then writeln('OK: x = 1 ' ) else writeln('Error: "if x = 1" is evaluated wrong !!!! ' ); END. > > It is a casio fx-300SA > > Maybe $5 digital calculators are smarter than $3000 computers ;) > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal