NSNumberFormatter различен на устройството и симулатора

Имам 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];

person Vins    schedule 17.02.2013    source източник
comment
вместо setDecimalStyle и задаване на броя цифри и т.н. опитайте [numberFormatter setPositiveFormat:@###0.##];   -  person Rachel Gallen    schedule 17.02.2013


Отговори (1)


Не мисля, че проблемът е във вашия резултат. Проблемът е информацията, която получавате от -[NSString doubleValue]. Този метод не зачита локала на потребителя.

Трябва да можете да използвате инструмента за форматиране, който сте направили, за да преобразувате self.textField.text в число, като правилно зачитате локала. Или можете да обмислите използването на NSDecimalNumbers, особено ако това е валута (изглежда така?). Тогава NSDecimalNumber има метод +decimalNumberWithString, който също прави правилното нещо за вас.

person Firoze Lafeer    schedule 17.02.2013
comment
@Vins Това казах да направя в отговора си на предишния ви въпрос - stackoverflow.com/questions/14913269/ - person rmaddy; 17.02.2013
comment
@rmaddy да, всъщност се вслушах в предложението ти :) - person Vins; 17.02.2013