1

我对当前包含 0.522000003606 的 NSNumber 变量“num”有疑问

我在 stackoverflow 上查找了其他几个问题,其他人也有同样的问题,但什么也没有。我的项目目前正在使用 ARC,因此我认为某些功能不可用,也就是说,除非我在当前想要设置 NSNumber 精度的类中不允许使用 ARC。

我了解 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];

我觉得这太微不足道了!任何人都可以给业余程序员一些建议吗?:)

编辑:

这就是我现在正在做的事情,使用 NSDecimal 而不是 NSNumber。“Now”是一个大字典对象,nowValue 是 num 的副本。

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

1 回答 1

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
于 2013-06-03T21:48:14.533 回答