Что вы получаете за NSLog (@ "%. 3g", 1.12345)?
Я провел несколько тестов, и, как я понял ваш вопрос, вы на правильном пути. Вот мои результаты:
NSLog(@"%g", 1.000000); => 1
NSLog(@"%g", 1.123456789); => 1.12346
NSLog(@"%.1g", 1.123456789); => 1
NSLog(@"%.2g", 1.123456789); => 1.1
NSLog(@"%.3g", 1.123456789); => 1.12
NSLog(@"%.4g", 1.123456789); => 1.123
Чтобы получить то, что вы хотите, используйте @ "%. 4g".