Как вычислить двойное значение до 2 десятичных знаков, но без округления цифр

#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.55 setMaximumFractionDigits:2 .