Either remove the ES_NUMBER (which only allows integer values) or create a custom control.
If you remove ES_NUMBER you can check after each entry (catching EN_CHANGE) to ensure you have only characters from your own dictionary which, in this case would be "0123456789.,-" and report an error if they mess up...
If you are inputting dollar values and assigning them to floats or doubles... you probably should read
THIS first. Most monetary software works in integer pennies, for the very reason that floating point math is never exactly accurate.