2013-08-02 2 views
0

Пожалуйста, кто-нибудь, помогите мне. Я делаю приложение Calculator, и я использовал NSNumberFormatter. Я хочу установить предел чисел, отображаемых на моем UILabel, например, максимум 12 цифр, но это означает, что любые цифры, даже если «1234121.38685 (12)». Поэтому, если я умножаю это число, оно увеличивается, и оно должно быть округлено правильно, и я хочу, чтобы это было, например, «9785123124.12», если снова «75647689751.5». Таким образом, результат-результат показал максимум целочисленной части, а не float. Как это сделать ?NSNumberFormatter IOS Калькулятор дисплея

numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setGroupingSeparator:@" "]; 
[numberFormatter setGroupingSize:3]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
[numberFormatter setDecimalSeparator:@"."]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:10]; 
[numberFormatter setRoundingMode:NSNumberFormatterRoundUp]; 
[numberFormatter setMaximumIntegerDigits:10]; 
+0

Я предлагаю NSDecimalNumber имеет функциональность, которую вы ищете: http://stackoverflow.com/questions/3981219/rounding-nsdecimalnumber – CharlesW

ответ

0

@Adam Behringer, гораздо лучше использовать этот код для получения RoundMode правильно !!

result=[[self math] calculations]; 
resultString=[NSString stringWithFormat:@"%.16f", result]; 
getIntPartOfValue=result; 
stringForGetIntPartOfValue=[NSString stringWithFormat:@"%lld",getIntPartOfValue]; 
[numberFormatter setMaximumFractionDigits:(maximumAmountOfDigits stringForGetIntPartOfValue.length)+1]; 
0

Одним из них было преобразование числа в NSString с использованием форматирования чисел, который вы установили. Убедитесь, что итоговые цифры будут больше 10. Затем используйте класс строк, чтобы усечь число.

NSString *numbLong = @"123023.123781237912378123"; // get this from your number formatter 
NSString *numbTruncated = [numbLong substringToIndex:10]; // 123023.123 
+0

Адам, это хорошая идея, но как сделать этот номер также округлены? Из вашего примера я хочу получить "123023.124" – user2647233

Смежные вопросы