В ролях вот так
(NSNumber *)myInstance
говорит компилятору обрабатывать myInstance, как если бы он был экземпляром класса NSNumber. Это может повлиять на время компиляции предупреждений и ошибок. Примечание: - компилятор. Это не имеет никакого значения для кода, который генерируется или выполняется - вообще. Код, который вы используете, по-прежнему
float test = [txtDiscount text];
где метод -text возвращает указатель на строку NSString, и вы пытаетесь присвоить ее переменной с плавающей запятой.
см. Ответ Кли, как получить значение с плавающей запятой из строки NSString, но убедитесь, что вы понимаете, почему то, что вы пытались сделать, неверно Это поможет нагрузкам в долгосрочной перспективе.