我遇到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是num。
的副本nowValue = (__bridge NSDecimal *)([now objectForKey:@"value"]);
答案 0 :(得分:1)
解决了问题!.....感谢每个人的输入,但是......这是一个字符串。 Martin 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