> On Nov 4, 2019, at 2:59 AM, Jay Kreibich <j...@kreibi.ch> wrote: > > >> On Nov 4, 2019, at 2:41 AM, Adrian Sherwin <sherwia+sql...@gmail.com> wrote: >> >> Hi, >> >> I would like to report the following as a bug in SQLITE: >> >> The SQLITE "round" function fails to round between 4.1 and 4.6% of numbers >> correctly to x decimal places when held as x+1 decimal places. >> >> The simplest example I have found with x=1 is: >> "select round(1.15,1)" >> Result: "1.1" (should be 1.2) > > SQLite uses the IEEE-754 floating point format for real values. > > In that format, the value “1.1500000…” does not exist. > > The closest value that can be represented is 1.14999997615814208984375 > > Hence, the rounding.
OK, no, I’m wrong. Because 1.05 rounds to 1.1, even though the representation is 1.0499999523162841796875. Well, half wrong. It is because of IEEE-754, but not because of representation. It would appear the round() function simply uses Banker’s Rounding: when given a value that ends in exactly 5, use the previous digit to figure out which way to go: even goes up, odd goes down. According to Wikipedia, this is the default rounding mode for IEEE-754 https://en.wikipedia.org/wiki/Rounding#Round_half_to_even <https://en.wikipedia.org/wiki/Rounding#Round_half_to_even> -j _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users