29

私は

float a = 1412.244019;

1412.24000000 のように、最も近い 2 番目の小数点以下に丸める必要があります。小数点以下 2 桁のみを表示したい場合は %.2f を使用することは理解していますが、そうではありません。数学的な理由から、フロートとして新しい a が必要です。

運が悪い場合は、stackoverflow で見つかったいくつかの方法を試しました。私が使用したより明白なものは、以下で言及しますが、それでも使用できませんでした。魔法が起こらない理由がわかりますか?

PS: 常にではなく、時々、望ましい効果が得られます。

前もって感謝します。

コード:

float a = 1412.244019;
NSLog(@"a is %f", a); //output a is 1412.244019
a = [[NSString stringWithFormat:@"%.2f", a] floatValue];
NSLog(@"a is %f", a); //output a is 1412.239990

編集:

上記の手術の後にフロートを使用しているように見えますが、NSLogが別のことを言っているにもかかわらず、それは1412.240000であると考えられています...奇妙です。しかし、私は欲しいものを手に入れているので、何も追いかけずに無駄な時間を過ごしたことを称賛します:)

EDIT私はあなたを正しい答えとして選びたいと思っていますが、私は1つしか選ぶことができないので、最初の良い答えと追加の説明を選びました(最後の2つのうち)。

4

6 に答える 6

6

この行のエラー

a = [[NSString stringWithFormat:@"%.2f", a] floatValue];

に修正します

a = [NSString stringWithFormat:@"%.02f", a];
于 2017-07-31T09:37:04.040 に答える
2

a に 100.0 を掛けて、おそらく丸めのために 0.5 を加算し、結果の int 値を取得できます。次に、/ 100 を使用して小数点の前の値を取得し、% 100 を使用して小数点以下 2 桁を取得できます。

于 2013-08-05T17:14:40.410 に答える