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

Reply via email to