Конвертировать double в NSNumber, сохраняя десятичную часть, даже если есть 0
Я загружаю некоторые данные Json, в которых есть цена, цена загружается как двойная, поэтому, например, если у меня есть 10.50, значение, назначенное моей переменной, будет 10.5, как я могу сохранить 0 после первого десятичного числа?
Это код, который я использовал для создания NSNumber:
NSNumber *numPrice = jsonElement[@"Price"]; //the json is 10.50 but numPrice becomes 10.5
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:numPrice];
4 ответа
Для целей вывода вы можете установить NSNumberFormatter
иметь ровно 2 десятичных знака, например
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
Это для отображения двух десятичных чисел. Внутренне ваш NSNumber будет храниться, конечно, с одной цифрой, если это возможно.
Любые конечные нули являются просто проблемой отображения, они не являются частью числа.
Ты не можешь Когда документ JSON содержит 10.50, это число 10.5. Нет разницы между 10.5000000, 10.50 или 10.5 в документе JSON. Они абсолютно на сто процентов одно и то же.
Вы можете свободно показывать этот номер любым удобным вам способом.
Вы не можете, то, что вам нужно сделать, если вы хотите показать числа с двумя десятичными знаками после сохранения их как NSNumber, - это напечатать их как число с плавающей точкой с двумя десятичными знаками. Что-то вроде того:
NSNumber *numPrice = jsonElement[@"Price"]; //the json is 10.50 but
NSString *numberString = [NSString stringWithFormat:@"%0.2f", numPrice.floatValue];