Есть много способов, которые вы можете сделать, но ваше решение зависит от ряда факторов.
Это всегда будет сокращаться до десятого места.
float floatNum = 43.6823921;
float truncatedFloat = truncf(floatNum * 10) / 10;
Как упоминалось выше, вы можете преобразовать его в строку и взять подстроку. Возможно, вы захотите использовать rangeOfString:
os, чтобы найти десятичное число, если вы не всегда имеете дело с двузначными числами.
Другой вариант - использовать NSDecimalNumber
с его методом decimalNumberByRoundingAccordingToBehavior:
для явной установки округления. Я использовал эту опцию несколько раз для обработки валютных операций, где точность очень важна.
float num = 43.6894589;
NSDecimalNumber *decimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[[NSNumber numberWithFloat:num] decimalValue]];
float truncatedFloat = [[decimalNumber decimalNumberByRoundingAccordingToBehavior:self] floatValue];
// NSDecimalNumberBehaviors
- (NSDecimalNumber *)exceptionDuringOperation:(SEL)method error:(NSCalculationError)error leftOperand:(NSDecimalNumber *)leftOperand rightOperand:(NSDecimalNumber *)rightOperand {
return [NSDecimalNumber notANumber];
}
- (short)scale {
return 1;
}
- (NSRoundingMode)roundingMode {
return NSRoundDown;
}