1

这是我找出游戏速度的算法。

self.speed=.7-self.score/50;

现在我怎样才能让 self.speed 舍入到小数点后 2 位?

4

3 回答 3

5

注意:我的回答假设您只关心小数位数,以便向用户显示值。

当您设置 NSNumberFormatter 以将数字格式化为字符串以进行显示时,请设置格式器最多保留两位小数。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];

NSString *formattedNumber = [formatter stringFromNumber:@(self.speed)];

setRoundingMode:如果您需要特定的回合方法,您可以选择使用该方法。

顺便说一句 - 您不应该为此使用字符串格式,因为它没有考虑用户的语言环境来正确格式化数字。

于 2012-11-10T18:40:38.333 回答
3

浮点数以 IEEE754 格式处理,您无法直接决定使用多少小数位。您可以直接决定使用多少位,或间接将数字的 las 部分四舍五入:

NSString* str=[NSString stringWithFormat: @"%.2f", number];
number= atof([str UTF8String]);

但是就像 maddy 指出的那样,您只需要在向用户显示数字时才需要舍入/截断不需要的十进制数字,因此您只能在打印时使用 %.2f 格式说明符,或者使用格式化程序。

于 2012-11-10T18:46:31.540 回答
0
self.speed = (int)(self.speed * 100 + 0.5) / 100.0;

如果你想把它作为一个字符串:

NSString *speedString = [NSString stringWithFormat: @"%.2f", self.speed];
于 2012-11-10T18:42:36.037 回答