Здесь я использую NSNumberFormater
, чтобы установить максимальное количество десятичных знаков в два-два. Кажется, он работает нормально, но когда я пытаюсь преобразовать его обратно в double, из строки, сгенерированной NSNumberFormater
, как вы можете видеть на выходе NSLog
, любое десятичное число удаляется и заменяется конечными нулями. Почему это?doubleValue из NSString, десятичные разряды удаляются
- (double)randomDoubleBetween:(double)smallNumber and:(double)bigNumber {
double diff = bigNumber - smallNumber;
double ranNum = (((double) (arc4random() % ((unsigned)RAND_MAX + 1))/RAND_MAX) * diff) + smallNumber;
NSNumberFormatter *doubleValueWithMaxDecimalDigits = [[NSNumberFormatter alloc] init];
[doubleValueWithMaxDecimalDigits setNumberStyle:NSNumberFormatterDecimalStyle];
[doubleValueWithMaxDecimalDigits setMaximumFractionDigits:2];
NSNumber *num = [NSNumber numberWithDouble:ranNum];
NSString *valueToReturn = [doubleValueWithMaxDecimalDigits stringFromNumber:num];
NSLog(@"String value %@", valueToReturn);
NSLog(@"Double value converted from string %f", [valueToReturn doubleValue]);
return [valueToReturn doubleValue];
}
NSLog выход:
2013-08-09 02: 25: 05,031 Г.Г. [27947: 907] Строка Значение 176,19
2013-08-09 02:25: 05,035 Г.Г. [27947: 907] Двойное значение преобразуется из строки 176,000000
Почему вы форматированием, что в первую очередь? –
@Josh: Мне нужно ограничить число десятичных знаков –