I haven't tried ur code since i don't know what ur main program call upon the code, but from the error messages, it seems that the auto-boxing from float into Float wrapper class didn't work well
Maybe u could do this way
public Float getValue(Integer discount){return (Float)(discount*price);} //Find out what to return here
Btw, why must u use the Float wrapper instead of the primitive float?
It would be less memory consuming if u just use the primitives, u didn't use the toString() or any other wrapper method in ur code after all
I suggest using primitives for this one