Как округляется десятичное число 2

100
11

Как округляется десятичное число 2?

48382,06 + 86106,62 + 83650,07 + 72939,61 = 291078,36

NSNumber *returnSum = 0;

for (int i = 0; i < [arraySum count]; i++) {
PayDoc *payDoc = (PayDoc*)([arraySum objectAtIndex:i]);
returnSum = [NSNumber numberWithFloat:[returnSum floatValue]+[payDoc.SOBTR floatValue]];
}

Результат ответа мой код returnSum = 291078,38

спросил(а) 2015-03-30T13:27:00+03:00 5 лет, 6 месяцев назад
1
Решение
81

Используйте NSDecimalNumber. Установите scale на 2 и roundingMode к NSRoundPlain

NSDecimalNumber *returnSum = [[NSDecimalNumber alloc] initWithFloat:0.0f];

for (PayDoc *payDoc in arraySum) {

NSDecimalNumber *sobtr = [[NSDecimalNumber alloc] initWithFloat:payDoc.SOBTR.floatValue];
returnSum = [returnSum decimalNumberByAdding:sobtr withBehavior:[NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:YES raiseOnOverflow:YES raiseOnUnderflow:YES raiseOnDivideByZero:YES]];
}

Я проверил вышеуказанные значения и дал 291078.36

ответил(а) 2015-03-30T13:41:00+03:00 5 лет, 6 месяцев назад
57

Вы пробовали следующее?

returnSum = @(  roundf([returnSum floatValue] * 100) / 100 + roundf([payDoc.SOBTR floatValue] * 100) / 100  );

Это заставит float иметь только две цифры (приблизительно...) после десятичной точки, а не просто показывать две цифры, как указывают другие комментарии и ответы.

Альтернативно, если вы не хотите округлять поплавки и просто хотите удалить десятичные цифры, вы можете написать

returnSum = @(  (int)([returnSum floatValue] * 100) / 100.0 + (int)([payDoc.SOBTR floatValue] * 100) / 100.0  );

ответил(а) 2015-03-30T13:56:00+03:00 5 лет, 6 месяцев назад
42

Использовать [NSNumber numberWithInt:[returnSum floatValue]+[payDoc.SOBTR floatValue]];

ответил(а) 2015-03-30T13:31:00+03:00 5 лет, 6 месяцев назад
-4

Лучше всего это сделать следующее:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:[returnSum floatValue]+[payDoc.SOBTR floatValue]]];

NSLog(@"Result...%@",numberString);

ответил(а) 2015-03-30T14:02:00+03:00 5 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема