Nobody should expect float comparisons like that to work. If they do they're asking for trouble. All you're seeing is what the database is letting you see. Their "0" is not really "0".
Try this in your friendly C compiler main() { double d = 22.35-(5.45+16.9); printf("%f\n",d); printf("%g\n",d); printf("%e\n",d); } On both MS Visual C and gcc on a Linux system: 0.000000 3.55271e-015 3.552714e-015 -----Original Message----- From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users-boun...@sqlite.org] On Behalf Of Israel Lins Albuquerque Sent: Thursday, March 07, 2013 12:04 PM To: sqlite-users@sqlite.org Subject: [sqlite] Bug on real operations An example speaks more than words: Execute this: SELECT 22.35 - (5.45 + 16.9), 22.35 = (5.45 + 16.9), (5.45 + 16.9) - 22.35; The expected result on almost databases is: 0.0, true or 1, 0.0 But in sqlite for some reason they are: 3.5527136788005e-15, 0, -3.5527136788005e-15 I thing this can be a bug on calculation of doubles. Regards, Israel Lins Albuquerque _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users