[英]NSNumberFormatter different on device and simulator
我有一個UITextField,使用此代碼,打印底部標簽上的值並格式化它。
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesGroupingSeparator:NO];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:2];
NSNumber *calcolo = [NSNumber numberWithDouble:[value1 doubleValue]-[self.textfield.text doubleValue]];
formattedString = [formatter stringFromNumber:calcolo];
self.label.text = formattedString;
在模擬器(美國)上,值正確顯示。 在設備(IT)上,鍵盤上有逗號,但逗號后的值始終為零。
編輯:這是有效的
NSNumber *temporaryValue1 = [formatter numberFromString:[NSString stringWithFormat:@"%@",value1]];
NSNumber *temporaryTextField = [formatter numberFromString:self.textField.text];
NSNumber *calcolo = [NSNumber numberWithFloat:([temporaryValue1 floatValue] - [temporaryTextField floatValue])];
formattedString = [formatter stringFromNumber:calcolo];
我不認為問題是你的輸出。 問題是你得到的輸入-[NSString doubleValue
]。 該方法不符合用戶的語言環境。
您應該能夠使用您創建的格式化程序將self.textField.text
轉換為正確尊重語言環境的數字。 或者您可以考慮使用NSDecimalNumber
,特別是如果這是貨幣(看起來像?)。 然后NSDecimalNumber
有一個方法+decimalNumberWithString
,它也為你做正確的事情。
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.