iOS Objective-C Как получить 2 десятичных округленных значения с плавающей точкой?

у меня есть

float a = 1412.244019;

и мне нужно округлить до ближайшего второго десятичного знака, как 1412.24000000. Я понимаю, что если я хочу представить только два десятичных знака, я использую% .2f, но это не так. Мне нужно новое по математическим соображениям как поплавок.

Я попытался пару методов, найденных на stackoverflow без удачи. Более очевидный, который я использовал, я упоминаю ниже, но все еще не имел успеха, используя его. Можете ли вы увидеть, почему волшебство не происходит?

PS: иногда он дает желаемый эффект, а не всегда, что заставляет меня задуматься ... хммм ...

Заранее спасибо.

Код:

float a = 1412.244019;
NSLog(@"a is %f", a); //output a is 1412.244019
a = [[NSString stringWithFormat:@"%.2f", a] floatValue];
NSLog(@"a is %f", a); //output a is 1412.239990

РЕДАКТИРОВАТЬ:

Например, когда я использую поплавок после вышеописанной операции, он считается 1412.240000, хотя NSLog говорит по-другому ... странно. Но я получаю то, что хочу, так что слава за потраченное время ничего не гоняю :)

РЕДАКТИРОВАТЬ Я хотел бы выбрать всех вас как правильные ответы, но так как я могу выбрать только один, я выбрал первый хороший ответ с дополнительным объяснением (из двух последних).

Ответы на вопрос(6)

Ваш ответ на вопрос