#ios #iphone #objective-c
#iOS #iPhone #objective-c
Вопрос:
У меня есть двойное число, например, для «12.1278», я хочу преобразовать это число только до 2 десятичных знаков, например «12.12».
Но, когда я использую следующий код:
double d = 12.1278;
NSLog(@"Float upto 2 decimals : %.2f", d);
Вывод:
Плавающее значение до 2 десятичных знаков: 12.13
Я хочу, чтобы преобразование выглядело так:
Плавающее значение до 2 десятичных знаков: 12.12
Комментарии:
1. Умножьте на 100, возьмите целую часть, разделите ее на 100, вот и все!
Ответ №1:
Используйте NSNumberFormatter
с roundingMode
of NSNumberFormatterRoundFloor
.
double d = 12.1278;
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setRoundingMode:NSNumberFormatterRoundFloor];
[formatter setMaximumFractionDigits:2];
NSString *numberString = [formatter stringFromNumber:@(d)];
NSLog(@"numberString: %@", numberString);
Вывод NSLog:
Числовая строка: 12.12
Комментарии:
1. почему бы не использовать округление в меньшую сторону? Почему вы решили использовать RoundFloor?
2. Это было произвольное решение.
NSNumberFormatterRoundDown
действительно хороший выбор, возможно, лучше. Выбор зависит от того, как следует округлять -1.555: -1.56 или -1.55setMaximumFractionDigits:2
.