Я не запускал это через компилятор, чтобы перепроверить его, но вот основная часть алгоритма (преобразованная из ответа этот вопрос ):
-(float) round:(float)num toSignificantFigures:(int)n {
if(num == 0) {
return 0;
}
double d = ceil(log10(num < 0 ? -num: num));
int power = n - (int) d;
double magnitude = pow(10, power);
long shifted = round(num*magnitude);
return shifted/magnitude;
}
Важно помнить, что Objective-C является надмножеством C, поэтому все, что допустимо в C, также действует в Objective-C.Этот метод использует функции C, определенные в math.h
.