> > The problem is: the "real" rounding error depends here on the shell (SQLite 
> > or JSDB) calling the SQLite library.

> Yes.  Different languages use different ways to hide the fact that they can't 
> hide the 0.1.

The difference of languages is irrelevant here.

Both shells call "SQLITE_API const unsigned char *sqlite3_column_text()". The 
returned string is not modified nor (re)converted by JSDB in any way.

Inputs are proven to be identical, so are compiler options.



> There's nothing you can do about this.

I have already fixed this issue - without figuring out what is exactly the 
problem. 

I just do not want to patch every future SQLite release.



>>>> R:\>sqlite NUL "select 99990.1;"
>>>> 99990.1
>>>> 
>>>> 
>>>> JSDB (www.jsdb.org) output:
>>>> 
>>>> js>var db = new SQLite();
>>>> js>db.exec("select 99990.1", function(r){writeln(r)});
>>>> 99990.1=99990.1000000001
>>>> true

> You are not doing the same thing both times.  One time you are writing the 
> result using SQLite.  The other time you are writing the result using a 
> 'writeln()' command.  There is no 'writeln()' command in SQLite.

THE PROBLEM OCCURS AT SQLITE LEVEL! The caller does not matter.

Behaviors diverge from sqlite3(071300).c: line 19911 (var "realvalue") very 
precisely.


Regards,
Etienne
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to