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 ! ? ? ?