• I never implement weird things so I don't know empirically the performance impact.  Float(53) is eight bytes so it is equal to a bigint data type.  My main concern would be that float is an imprecise data type so there are some numbers that get rounded in the process of being stored.  Will this cause duplicates for you when rounding two different numbers?  As for performance it would take a bit longer to interpret a mantissa and exponent rather than a simple bigint.  I don't know if indexes "interpret" exponents but they might need to in order to determine sorting.

    Can't you CAST the column to an int and store it in 4 bytes?