I think there will be disagreement about whether to make it a one off 'doubling' of precision (float -> double) or a more permanent variable precision representation.
The bitcoin blockchain does not currently use floating point numbers to represent transaction values. It uses integers.
I'm actually a little confused about this. According to
the dev-guide, TxOut.value is an int64_t. 21M Bitcoins * 100M satoshis = 2.1 quadrillion satoshis. But 2.1 quadrillion only requires 41 bits of precision to represent (0x1E8F1C10800). This means that the upper 23 bits must be zero, no?