iPhone: круглое двойное значение - PullRequest
0 голосов
/ 18 января 2012

У меня есть несколько двойных значений. 35.44, 35.66. Мне нужно их округлить, и результат должен быть как NSNumber. Результат должен быть 35,4, 35,7. Так как это сделать? Еще раз, результат должен быть как NSNumber, а не NSString!

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Вы можете напечатать его в строку и использовать строку формата, чтобы обрезать ее до одной десятичной точки.

NSString *stringRepresentation = [NSString stringWithFormat:@"%.1f", myDouble];
NSNumber *number = [NSNumber numberWithDouble:[stringRepresentation doubleValue]];
0 голосов
/ 18 января 2012
NSNumber *myNumber = [NSNumber numberWithInt:myDouble];

или

NSNumber *myNumber = [NSNumber numberWithInt:(int)myDouble];

РЕДАКТИРОВАТЬ: я неправильно прочитал исходный вопрос и подумал, что вы хотите сохранить двойное значение как целое число в nsnumber.

Таким образом, чтобы ответить на правильныйвопрос, другой вариант - промежуточный тип int:

double myDouble = 1.23;
int myInt = myDouble * 10;
myDouble = (double)myInt ;
myDouble /= 10; 
NSNumber *myNumber = [NSNumber numberWithDouble:myDouble];

Возможно, вам лучше просто сохранить дубль в NSNumber и округлить его, когда вы получите его позже.

EDIT 2:

более упрощенная версия будет выглядеть так:

double myDouble = 1.23;
myDouble = (int)(myDouble * 10);
NSNumber *myNumber = [NSNumber numberWithDouble:myDouble/10];

вероятно, лучше не создавать временную строку nsstring ... imho

0 голосов
/ 18 января 2012

Умножьте на 10, используйте функцию округления, чтобы убрать десятичную дробь, а затем разделите на 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...