У меня есть NSNumberFormatter, настроенный для форматирования с использованием значащих цифр, поэтому он должен отображать только столько десятичных цифр, сколько необходимо для правильного отображения значения.
Когда он используется для форматирования 7.0
, он работает точно так, как ожидалось, и производит @"7"
, но когда он используется для форматирования 0.0
, форматтер создает @"0.0"
вместо @"0"
, как можно было бы ожидать.
NSNumberFormatter *doubleValF = [[NSNumberFormatter alloc] init];
[doubleValF setNumberStyle:NSNumberFormatterDecimalStyle];
[doubleValF setRoundingMode:NSNumberFormatterRoundHalfUp];
doubleValF.maximumFractionDigits = 9;
doubleValF.minimumFractionDigits = 0;
doubleValF.minimumSignificantDigits = 0;
doubleValF.maximumSignificantDigits = 30;
[doubleValF setUsesSignificantDigits:YES];
double value1 = 0.0;
NSString *value1String = [doubleValF stringFromNumber:[NSNumber numberWithDouble:value1]];
double value2 = 7.0;
NSString *value2String = [doubleValF stringFromNumber:[NSNumber numberWithDouble:value2]];
NSLog(@"value1=%@", value1String);
NSLog(@"value2=%@", value2String);
Когда я запускаю этот код, я получаю следующий результат:
2012-12-15 15:57:03.425 StackOverflowTests[41701:11303] value1=0.0
2012-12-15 15:57:03.426 StackOverflowTests[41701:11303] value2=7