Преобразуйте NSString, чтобы удвоиться для вычислений и затем обратно снова распечатать в NSString

Я принимаю NSString как

NSString *value = [valuelist objectAtIndex:valuerow];
NSString *value2 = [valuelist2 objectAtIndex:valuerow2];

от UIPickerView. Я хочу

double *cal = value + (value2 * 8) + 3;


NSString *message =[[NSString alloc] initWithFormat:@"%@",cal];

Я должен смочь получить строку в сообщении после того, как я сделаю вычисления на нем.. Помогите Моей программе, отказывает

12
задан Omkar Jadhav 21 July 2010 в 12:34
поделиться

3 ответа

double cal = [value doubleValue] + ([value2 doubleValue] * 8) + 3;
NSString *message =[[NSString alloc] initWithFormat:@"%f",cal];
35
ответ дан 2 December 2019 в 03:43
поделиться

Вы не должны все время конвертировать между числами типа double и string, так как это имеет тенденцию к потере точности (в общем, вы должны быть очень осторожны , если вы этого не сделаете. хочу потерять точность).

Например, nextafter (1.0,2.0) возвращает наименьшее двойное значение больше 1 (точно 1.0000000000000002220446049250313080847263336181640625, но мы довольны результатом 1.0000000000000002). Форматирование с помощью «% g» просто возвращает «1».

Мы ожидаем, что NSNumber поступит правильно, но [[NSNumber numberWithDouble: nextafter (1,2)] stringValue] также возвращает «1». Согласно документам, - [NSNumber stringValue] вызывает [self descriptionWithLocale: nil] , который форматирует его с помощью "% 0.16g". Этого не достаточно. Однако мы получаем правильный ответ, форматируя "% .17g". Я думаю, что "% .17g" достаточно при условии, что двойники являются 64-битными двойниками IEEE 754 и библиотеки работают правильно, но нет никакой гарантии.

В конце концов, нет никакой гарантии, что [[NSString (hidden) doubleValue] == n .

3
ответ дан 2 December 2019 в 03:43
поделиться
double cal = [value doubleValue] + ([value2 doubleValue] * 8) + 3;
NSString *message =[[NSString alloc] initWithFormat:@"%g",cal];

// do work with message

[message release];
1
ответ дан 2 December 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: