我在读取和写入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,它就可以了。这是为什么?
谢谢!
答案 0 :(得分:1)
格式化十进制数是个问题。通常,您必须使用%@
,而不是仅使用myNumber
与使用[NSDecimalNumber description]
的{{1}}。这将本地化小数分隔符。
[NSDecimalNumber descriptionWithLocale:]
如果您需要其他格式,例如限制小数位数或添加分组分隔符,您可以使用self.textField.text = [NSString stringWithFormat:@"%@", [myNumber descriptionWithLocale:[NSLocale currentLocale]];
,但NSNumberFormatter
首先将所有数字转换为NSNumberFormatter
,因此您总会失去精确度。
格式double
正在滚动您自己的格式化程序时,更强大的解决方案。
答案 1 :(得分:0)
self.textField.text = [NSString stringWithFormat:@"%@,", myNumber];
答案 2 :(得分:0)
请查看以下代码 -
var test = calc.sum(1,2);
答案 3 :(得分:0)
NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"120000"];
NSLocale *priceLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-in"];
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormatter setLocale:priceLocale];
NSString *format = [currencyFormatter positiveFormat];
[currencyFormatter setPositiveFormat:format];
NSString *currencyString1 = [currencyFormatter stringFromNumber:price];
DLog(@"%@",currencyString1);