Класс NSNumberFormatter не округляется до правильного значения - PullRequest
0 голосов
/ 28 ноября 2018

Я использую класс NSNumberFormatter для округления десятичного числа до двух цифр и выбора большего числа при округлении.

NSString *value = @"1054.705";
NSNumberFormatter *valueDouble = [[NSNumberFormatter alloc] init];
valueDouble.roundingMode = NSNumberFormatterRoundCeiling;
[valueDouble setMaximumFractionDigits:2];
NSNumber *myNumber = [valueDouble numberFromString:value];

Desired Output : 1054.71
Output Coming : 1054.705

Так что в этом случае раунд 0,705 всегда будет равен 0,71, что когда-либо будетцифры в конце.

1 Ответ

0 голосов
/ 30 ноября 2018

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

if ((NSInteger)(myNumber.doubleValue * 100) % 10 == 0) {
    myNumber = @(ceil(myNumber.doubleValue * 100) / 100);
}
...