2

在我的代码中,我有一个 double number 2.555。我%.2f通过 NSLog 来显示它,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

我认为有一种更简单的方法可以做到这一点。如果我理解正确,你不想使用 floor() 因为你想保持“div”的内容不变。如果这是正确的,那么您可以执行以下操作。

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

以上将在第二个之后删除小数,但仅用于显示。“div”的内容不变。

于 2013-03-16T13:31:45.710 回答