簡體   English   中英

NSNumberFormatter在設備和模擬器上有所不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM