这是我找出游戏速度的算法。
self.speed=.7-self.score/50;
现在我怎样才能让 self.speed 舍入到小数点后 2 位?
这是我找出游戏速度的算法。
self.speed=.7-self.score/50;
现在我怎样才能让 self.speed 舍入到小数点后 2 位?
注意:我的回答假设您只关心小数位数,以便向用户显示值。
当您设置 NSNumberFormatter 以将数字格式化为字符串以进行显示时,请设置格式器最多保留两位小数。
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
NSString *formattedNumber = [formatter stringFromNumber:@(self.speed)];
setRoundingMode:
如果您需要特定的回合方法,您可以选择使用该方法。
顺便说一句 - 您不应该为此使用字符串格式,因为它没有考虑用户的语言环境来正确格式化数字。
浮点数以 IEEE754 格式处理,您无法直接决定使用多少小数位。您可以直接决定使用多少位,或间接将数字的 las 部分四舍五入:
NSString* str=[NSString stringWithFormat: @"%.2f", number];
number= atof([str UTF8String]);
但是就像 maddy 指出的那样,您只需要在向用户显示数字时才需要舍入/截断不需要的十进制数字,因此您只能在打印时使用 %.2f 格式说明符,或者使用格式化程序。
self.speed = (int)(self.speed * 100 + 0.5) / 100.0;
如果你想把它作为一个字符串:
NSString *speedString = [NSString stringWithFormat: @"%.2f", self.speed];