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