/ / Задайте точност за стойността на NSNumber - ios, aim-c, nsstring, nsnumber, nsnumberformatter

Задаване на прецизност за стойността на NSNumber - ios, objective-c, nsstring, nsnumber, nsnumberformatter

Имам проблем с променлива NSNumber "num", която понастоящем съдържа 0,522000003606

Потърсих няколко други проблема относно stackoverflowс други имат същия проблем, но нищо. В момента проектът ми използва ARC, така че мисля, че някои функции не са достъпни, тоест освен ако не забраня ARC в рамките на класа, който в момента искам да настроя прецизността на NSNumber.

Разбирам, че NSNumberFormatter е основната функция на класа setPrecision, която трябва да използвам, но имам проблеми ....

Всеки път, когато използвам NSNumberFormatter, той плюе обратно NULL !!!

nowValue = [now objectForKey:@"value"]; // This is what IM ACTUALLY DOING!!!
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp];
[formatter setFormatWidth:2];
NSString *string = [formatter stringFromNumber:num];

Чувствам се, че това е SOOO тривиално! Може ли някой да даде на любителски програмист някакъв съвет? :)

РЕДАКТИРАНЕ:

Това правя сега, използвайки NSDecimal, а не NSNumber. „Now“ е голям обект в речника и nowValue е копие на число.

nowValue = (__bridge NSDecimal *)([now objectForKey:@"value"]);

Отговори:

1 за отговор № 1

Проблема решен!..... Благодаря за всеки вход, но да .... беше низ. Мартин R, благодаря за кода за отстраняване на грешки. И разбирането на _NSCFString наистина е просто обвивка за NSString, но те бяха основно еднакви.

Ето моето решение ...

nowValue outputs : 24.14295959472

nowValue = [now objectForKey:@"value"];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * nowNum = [f numberFromString:nowValue];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
nowValueFormatted = [formatter stringFromNumber:nowNum];

nowNum outputs : 24.14