используя numberWithFloat, но я хочу сначала обрезать число с плавающей запятой до 1 десятичного знака - PullRequest
1 голос
/ 23 февраля 2012

Я могу добавить число с плавающей запятой в свой словарь, и это хорошо работает:

[NSNumber numberWithFloat:[self.longitude floatValue]]

Но есть ли хитрость, чтобы установить десятичное место в 1 цифру?

В настоящее время иногда6 цифр после запятой и мне эта точность не нужна.

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Как правило, лучше просто позволить компьютеру сохранять то, что он будет иметь для значения с плавающей запятой, но если вы заинтересованы в отображении только одного десятичного знака для пользователя, вы можете просто отформатировать его как таковой при выводе числа, напримерчто касается UILabel или UITextField.Тем не менее, нет никакой реальной выгоды во времени или пространстве, которые можно получить, урезая до одного десятичного знака перед сохранением данных - в любом случае это займет одинаковое количество пространства и времени.

1 голос
/ 23 февраля 2012

Числа с плавающей точкой на самом деле не работают таким образом. Каждое число с плавающей запятой описывает значение, которое максимально приближено к числу, которое вы пытаетесь представить, учитывая возможное разрешение с типом данных, который вы используете (т. Е. Double может описывать ваше значение более точно, чем число с плавающей запятой).

Как подсказывает @psoft, лучше всего позволить компьютеру позаботиться об этих деталях и беспокоиться об этом только тогда, когда вам нужно отобразить значение.

Если вы действительно не хотите представлять число с плавающей запятой, то вы можете рассмотреть возможность использования NSDecimal или его обертки объектов NSDecimalNumber. Они позволяют более широко представлять конкретные значения, не прибегая к деталям представления чисел с плавающей запятой. Однако я предполагаю, что вам не нужно этого делать. Просто используйте float (или double) и не беспокойтесь о точности, которую он использует внутри.

1 голос
/ 23 февраля 2012

Я думаю, что это будет работать:

[NSNumber numberWithFloat:[[NSString stringWithFormat:@"%.1f", self.longitude] floatValue]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...