int number1 = askNumber(10);
The integer literal 10 is stored as an integer. Therefore when this code is executed, it'll call "int askNumber(int high, int low = 1);".
float number2 = askNumber(10.9);
The floating-point literal 10.9 is stored as a double. Therefore neither "int askNumber(int high, int low = 1);" or "float askNumber(float highNum, float lowNum = 1.0);" can be called. The compiler however can implicitly convert the double to both an integer and a floating point. However it is unsure which one is desired and therefores generates an error message.
The easiest way to solve this is by writing "10.9f" rather than "10" when calling "int askNumber(float)".
EDIT: too slow :/
"It's better to regret something you've done than to regret something you haven't done."