有人知道是否有一种方法可以在纪念品之后将两个数字四舍五入。
示例:
10.28000 -> 10.3
13.97000 -> 14.0
5.41000 -> 5.4
非常感谢!
此致 塞巴斯蒂安;)
答案 0 :(得分:1)
试试这个:
float aFloatValue = 3.1415926;
NSString *formatted = [NSString stringWithFormat:@"%01.1f", aFloatValue];
NSLog(@"Formatted: %@", formatted);
将其视为一个好的sprintf
。
答案 1 :(得分:1)
使用NSNumberFormatter创建具有指定阵营数字的字符串。
float num = 10.28000;
formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
NSNumber *value = [NSNumber numberWithFloat:num];
NSString *newNumString = [formatter stringFromNumber:value];
答案 2 :(得分:1)
您也可以尝试
float num = 10.28000
float result = (roundf(num * 10.0))/10.0;
(乘以10,然后再舍入,然后再乘以10) 不要忘记.0这样除法是浮点而不是整数,它将再次舍入
答案 3 :(得分:1)
具有NSRoundPlain行为的纯Cocoa方式:
- (NSDecimalNumber *)decimalNumberForFloat:(float)f_
{
NSNumber *number = [NSNumber numberWithFloat:f_];
NSDecimal decimal = [number decimalValue];
NSDecimalNumber *originalDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:decimal];
NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain
scale:0
raiseOnExactness:NO
raiseOnOverflow:NO
raiseOnUnderflow:NO
raiseOnDivideByZero:NO];
return [originalDecimalNumber decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
}
因为NSDecimalNumber是NSNumber的子类,要获取原始的float调用 - [NSDecimalNumber floatValue]
答案 4 :(得分:0)
试试这个:
float myFloat = 10.4246f;
myFloat = ((int) ((myFloat * 100) + 5)) / 100.0f;
答案 5 :(得分:0)
float fval = 1.54f;
float nfval = ceilf(fval * 10.0f + 0.5f)/10.0f;