On May 24, 2019, at 7:10 AM, Jose Isaias Cabrera <jic...@outlook.com> wrote: > > Dr. Richard Hipp, on Friday, May 24, 2019 08:44 AM, wrote... >>> Dr. Hipp, how many more scenarios, where round gives the wrong answer, >>> exist? Thanks. >> >> Consider these two queries: >> >> SELECT round(3.255,2); >> SELECT round(3.2549999999999998,2); >> >> Do you expect them to give different answers? > > 3.26 > 3.25
Go read this: https://www.floating-point-gui.de/ Then install this extension: https://chiselapp.com/user/lifepillar/repository/sqlite3decimal/index Having done both, you’ll know why SQLite does what it does, and will have a solution for the problem where it matters. And it doesn’t always matter! Anything dealing in real-world measurements, for example, generally doesn’t need more than 9 decimal digits of precision, depending on the measuring instrument, which is more than covered by an IEEE-754 double. Measurement instruments are not absolutely precise: they have inherent inaccuracies, and electronic instruments have drift and other characteristics that can prevent them from giving the same answer given the same task. Since the measurement itself cannot be more precise than an IEEE-754 double, any “error” in an answer computed from it is down in the noise floor of the measurement. That is to say, two measurements taken back-to-back might give the same or greater error. This is no accident. IEEE-754 was designed by people working in the physical sciences, and they knew all of this when they designed it. It is what it was designed *for*. What IEEE-754 was *not* designed for was discrete math, such as monetary matters on scales smaller than a national economy. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users