1

これは、ゲームの速度を調べるためのアルゴリズムです。

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

self.speed を小数点以下 2 桁に丸めるにはどうすればよいですか?

4

3 に答える 3

5

注:私の答えは、ユーザーに値を表示する目的で小数点以下の桁数だけを気にすることを前提としています。

数値を表示用の文字列にフォーマットするように NSNumberFormatter を設定するときは、小数点以下 2 桁までのフォーマッタを設定します。

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]);

しかし、マディが指摘したように、ユーザーに数値を提示する場合にのみ、不要な10進数を丸めたり切り捨てたりする必要があるため、印刷時に%.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 に答える