LacaK <la...@users.sourceforge.net> wrote: >> So only solution is use TEXT columns (with TEXT affinity) ? There is no >> way how to use DECIMAL columns (with NUMERIC affinity) ? >> My goal is store numeric values with big precision (as declared per >> column DECIMAL(30,7)).
SQLite happily ignores those numbers in parentheses. There is no arbitrary precision floating point data type in SQLite. You get to choose between text, 64-bit integers, 64-bit IEEE doubles, and blobs. >> I do not want any conversion to floating-point values ... because such >> conversion loses digits and is not reversible to original value. >> What I will expect is: If supplied value can not be "reversibly" >> converted to floating-point representation (REAL storage class), then >> store it as text with TEXT storage class Use affinity of NONE (don't specify any type), and figure out in your program for each value whether to store as a floating point number or as text. Use sqlite3_bind_double or sqlite3_bind_text accordingly. >> But on this page http://www.sqlite.org/datatype3.html is written: >> "When text data is inserted into a NUMERIC column, the storage class of >> the text is converted to INTEGER or REAL (in order of preference) if >> such conversion is lossless and reversible. For conversions between TEXT >> and REAL storage classes, SQLite considers the conversion to be lossless >> and reversible if the first 15 significant decimal digits of the number >> are preserved. *If the lossless conversion of TEXT to INTEGER or REAL is >> not possible then the value is stored using the TEXT storage class*." In the examples you've shown, the first 15 significant digits are indeed preserved. SQLite appears to behave as documented. What again seems to be the problem? -- Igor Tandetnik
_______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users