设置NSNumber值的精度 [英] Set Precision for NSNumber value

查看:42
本文介绍了设置NSNumber值的精度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到一个NSNumber变量"num"的问题,该变量当前包含0.522000003606

I am having an issue with an NSNumber variable "num" that is currently containing 0.522000003606

我在stackoverflow上查找了其他几个问题,其他问题也相同,但一无所获.我的项目当前使用的是ARC,因此我认为某些功能不可用,也就是说,除非我不允许在类中使用ARC,否则我现在想设置NSNumber的精度.

I looked up several other issues on stackoverflow with others having the same issue but nothing. My project is currently using ARC so I think some features are unavailable, that is, unless I disallow ARC within the class I am currently wanting to set the precision of the NSNumber.

我了解NSNumberFormatter是我必须使用的基本setPrecision类函数,但是我遇到了问题....

I understand NSNumberFormatter is the basic setPrecision class function I must use but I am having issues....

每次我使用NSNumberFormatter时,它都会返回NULL !!!

Everytime i use NSNumberFormatter, it spits back 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];

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

I feel like this is SOOO trivial! Can anyone give an amateur programmer some advise ? :)

这就是我现在正在使用NSDecimal而不是NSNumber进行的操作."Now"是一个大的字典对象,nowValue是num的副本.

This is what I'm doing now, using an NSDecimal rather than NSNumber. "Now" is a large dictionary object and nowValue is a copy of num.

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

推荐答案

问题已解决!Martin R,感谢您调试代码.而且了解_NSCFString实际上只是NSString的包装,但是它们基本上是相同的.

Problem Solved!..... Thanks for everyones input but yea.... it was a string. Martin R, thanks for you debugging code. And understanding _NSCFString is really just a wrapper for an NSString but they were mainly the same.

这是我的解决方法...

Here was my solution...

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

这篇关于设置NSNumber值的精度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆