我在读写NSDecimalNumbers时遇到问题。说我有这个十进制数字:
NSDecimalNumber *myNumber; // this is 123,23
然后我像这样读取它的值并显示在textField中
self.textField.text = [NSString stringWithFormat:@"%@", myNumber];
在textField:“ 123.23”中看起来像这样,注意点而不是逗号。如果我尝试像这样再次将其读入属性,则将排除小数。 123是唯一读取的内容:
myNumber = [NSDecimalNumber decimalNumberWithString:self.textField.text];
但是,如果我使用UIKeyboardTypeDecimalPad和一个逗号用键盘写123,23,它就可以正常工作。为什么是这样?
谢谢!
最佳答案
格式化十进制数字是一个问题。通常,必须使用%@
,而不仅仅是将myNumber
与使用[NSDecimalNumber description]
的[NSDecimalNumber descriptionWithLocale:]
一起使用。这将本地化小数点分隔符。
self.textField.text = [NSString stringWithFormat:@"%@", [myNumber descriptionWithLocale:[NSLocale currentLocale]];
如果需要其他格式,例如限制小数位数或添加分组分隔符,则可以使用
NSNumberFormatter
,但是NSNumberFormatter
首先将所有数字转换为double
,因此,您总是会失去精度。格式化
NSDecimalNumber
时,更强大的解决方案是滚动您自己的格式化程序。关于ios - 读写NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30752302/