2

私のコードでは、2つの数字があり2.555ます。%.2fNSLogを使用して表示しまし2.55たが、出力は2.56です。望まない数値を四捨五入しています!ceil(double)あることと使用されることは知っていfloor(double)ますが、ここでは役に立ちません。

double div = a/b;
NSLog(@"DIV = %.f", div);
4

2 に答える 2

1

あなたのコードを見なければ、間違いを見つけることはできません。以下のコードは、必要に応じて機能します。

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:2.555]];
NSLog(@"%@",numberAsString);
[numberFormatter release];

NSNumberFormatterについてはこのリンクを参照できます

于 2013-03-16T12:47:04.000 に答える
0

これを行うにはもっと簡単な方法があると思います。私があなたを正しく理解しているなら、あなたは「div」の内容を変更しないようにしたいので、floor()を使いたくないでしょう。これが正しければ、次のことができます。

NSLog(@ "DIV =%.2f"、trunc(div * 100)/ 100);
NSLog(@ "DIV =%.2f"、floor(div * 100)/ 100);

上記は、秒の後に小数をハックしますが、表示のみです。「div」の内容は変更されていません。

于 2013-03-16T13:31:45.710 に答える