Hi,
 
Does anyone knows why floating point numbers are truncated when they are
written or read from the database?!
The following code truncates the number so that precision is lost!
 
  rc = sqlite3_exec(db, "create table test_tab (num_row real)", callback, 0,
&zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }
 
  rc = sqlite3_exec(db, "insert into test_tab (num_row)
values(1.12345678901234567890)", callback, 0, &zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }
 
  rc = sqlite3_exec(db, "select num_row from test_tab", callback, 0,
&zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }

The result ist "1.12345678901235"!? Is there any fixed size for the
printf's??? Can I change it without changing the sourcecode?!
 
Best regards, Andreas Terganov

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

Reply via email to