There is no source of errors in doing:
bigint_value = float_value * 10^E if E else float_value
float_value = bigint_value / 10^E if E else bigint_value
Obviously only convert to real numbers if you are doing operations on numbers in your system, otherwise keep in client format like you said.