Hello !  

When we declare SQLITE_OMIT_FLOATING_POINT what really happens is that this
is activated (mainly #define double sqlite_int64):

/*
** If compiling for a processor that lacks floating point support,
** substitute integer for floating-point
*/
#ifdef SQLITE_OMIT_FLOATING_POINT
# define double sqlite_int64
# define float sqlite_int64
# define LONGDOUBLE_TYPE sqlite_int64
# ifndef SQLITE_BIG_DBL
#?? define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
# endif
# define SQLITE_OMIT_DATETIME_FUNCS 1
# define SQLITE_OMIT_TRACE 1
# undef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
# undef SQLITE_HAVE_ISNAN
#endif
#ifndef SQLITE_BIG_DBL
# define SQLITE_BIG_DBL (1e99)
#endif  

And with some more macros we could also have sqlite using _Descimal64 instead
of double:  

/*
** If compiling for a processor that lacks floating point support,
** substitute integer for floating-point
*/
#ifdef SQLITE_OMIT_FLOATING_POINT
# define sqlite_double sqlite_int64
# define TO_SQLITE_DOUBLE(x)? (x)
# define LITDBL(n) n
# define float sqlite_int64
# define LONGDOUBLE_TYPE sqlite_int64
# ifndef SQLITE_BIG_DBL
#?? define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
# endif
# define SQLITE_OMIT_DATETIME_FUNCS 1
# define SQLITE_OMIT_TRACE 1
# undef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
# undef SQLITE_HAVE_ISNAN
#else
# ifdef SQLITE_USE_DECIMAL
# define sqlite_double? _Decimal64
# define TO_SQLITE_DOUBLE(x)? __bid_extenddfdd(x)
# define LITDBL(n) n##dd
#? define LONGDOUBLE_TYPE _Decimal128
# else
#? define sqlite_double? double
# define TO_SQLITE_DOUBLE(x)? (x)
#? define LITDBL(n) n
#? define LONGDOUBLE_TYPE long double
# endif
#endif
#ifndef SQLITE_BIG_DBL
# define SQLITE_BIG_DBL (LITDBL(1e99))
#endif  

#ifndef DOUBLE_SIGNIFICANT_DIGITS
# define DOUBLE_SIGNIFICANT_DIGITS 16
#endif  

Cheers !  

?  ?  

?

Reply via email to