Why avoid using float to represent currency and alternatives