我在读和写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,它工作得很好。为什么会这样呢?
谢谢!
发布于 2015-06-10 09:41:10
格式化十进制数字是一个问题。通常,不只是将%@与使用[NSDecimalNumber description]的myNumber一起使用,而是必须使用[NSDecimalNumber descriptionWithLocale:]。这将本地化十进制分隔符。
self.textField.text = [NSString stringWithFormat:@"%@", [myNumber descriptionWithLocale:[NSLocale currentLocale]];如果需要其他格式设置,例如限制小数位数或添加分组分隔符,则可以使用NSNumberFormatter,但是NSNumberFormatter首先将所有数字转换为double,因此始终会丢失精度。
格式化NSDecimalNumber时,更健壮的解决方案是滚动您自己的格式化程序。
发布于 2015-06-10 09:32:06
self.textField.text = [NSString stringWithFormat:@"%@,", myNumber];发布于 2015-06-10 09:34:45
请检查下面的代码-
self.textField.text = [NSString stringWithFormat:@"%@",[NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterDecimalStyle]];https://stackoverflow.com/questions/30752302
复制相似问题