首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读写NSDecimalNumber

读写NSDecimalNumber
EN

Stack Overflow用户
提问于 2015-06-10 09:24:38
回答 4查看 150关注 0票数 0

我在读和写NSDecimalNumbers方面有问题。假设我有这个十进制数:

代码语言:javascript
复制
NSDecimalNumber *myNumber; // this is 123,23

然后,我像这样读取它的值,并在textField中显示它

代码语言:javascript
复制
self.textField.text = [NSString stringWithFormat:@"%@", myNumber];

在textField中,它看起来是这样的:"123.23",注意点而不是逗号。如果我再像这样把它读到属性中,小数就被排除了。123是唯一能读到的东西:

代码语言:javascript
复制
myNumber = [NSDecimalNumber decimalNumberWithString:self.textField.text];

但是,如果我用UIKeyboardTypeDecimalPad和逗号用键盘编写123,23,它工作得很好。为什么会这样呢?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-10 09:41:10

格式化十进制数字是一个问题。通常,不只是将%@与使用[NSDecimalNumber description]myNumber一起使用,而是必须使用[NSDecimalNumber descriptionWithLocale:]。这将本地化十进制分隔符。

代码语言:javascript
复制
self.textField.text = [NSString stringWithFormat:@"%@", [myNumber descriptionWithLocale:[NSLocale currentLocale]];

如果需要其他格式设置,例如限制小数位数或添加分组分隔符,则可以使用NSNumberFormatter,但是NSNumberFormatter首先将所有数字转换为double,因此始终会丢失精度。

格式化NSDecimalNumber时,更健壮的解决方案是滚动您自己的格式化程序。

票数 1
EN

Stack Overflow用户

发布于 2015-06-10 09:32:06

代码语言:javascript
复制
self.textField.text = [NSString stringWithFormat:@"%@,", myNumber];
票数 0
EN

Stack Overflow用户

发布于 2015-06-10 09:34:45

请检查下面的代码-

代码语言:javascript
复制
self.textField.text = [NSString stringWithFormat:@"%@",[NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterDecimalStyle]];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30752302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档