Установите number
на 1.7849995
, и вы получите результат, который видите.Обратите внимание, что %f
печатает 6 знаков после запятой, и что результат округляется до этого количества мест, поэтому 1.7849994
не будет работать.
Форматирование без округления
Чтобы ответить на ваш комментарийвопрос: используйте NSNumberFormatter
.Я думаю, что все форматеры стиля printf
круглые.NSNumberFormatter
обеспечивает 7 различных режимов округления.Вот модифицированная версия вашей тестовой функции:
void RoundOffTest(double number)
{
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setFormat:@"0.000000"]; // see docs for format strings
[formatter setRoundingMode:NSNumberFormatterRoundFloor]; // i.e. truncate
NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithDouble:number]];
NSLog(@"%@\n", formatted);
[formatter release];
}