If you use the word 'float', then MySQL will only store 4 bytes worth of data. Let's say you need to store numbers of -999999999999.99 to 999999999999.99 (that is, roughly 1 trillion, positive or negative, with 2 post-decimal precision). Declare it like this:
CREATE TABLE whatever (
[...],
amount DECIMAL(15,2),
[...]
);
That gives you a format of
12.2 -- 12 digit precision before your decimal place, 2 digits after, and it can be signed. So you can have positive or negative numbers up to 999999999999.99. If you flagged it UNSIGNED, you could make it (14,2) or have it be up to 10 trillion, basically.
I know that FLOAT (without a size declared) has a 4 byte storage, which probably means that even with the most optimal storage, a signed number will peak at around 20,000,000 with hundredths precision in the decimal, although the manual isn't clear as to how the post-decimal precision is handled, which is why I'd recommend using the DECIMAL(X,Y) notation. Incidentally, DECIMAL(9) is syntactically equivalent to DECIMAL(9,2), but it never hurts to be verbose.
Try using the decimal example from the code block, and tell me if it stores your variable right. I remember having some trouble with decimals myself, but I think that was because when I first started off with mysql, I thought DECIMAL(7,2) was XXXXXXX.YY, instead of XXXXX.YY.