防止舍入双数

时间:2013-03-16 12:41:38

标签: objective-c

在我的代码中,我有一个双号2.555。我使用%.2f通过NSLog显示它有2.55,但输出是2.56。这是我不想要的数字的四舍五入!我知道有ceil(double)floor(double)可供使用,但他们在这里没有帮助我。

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

2 个答案:

答案 0 :(得分: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

的链接

答案 1 :(得分:0)

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

NSLog(@“DIV =%。2f”,trunc(div * 100)/ 100);
NSLog(@“DIV =%。2f”,floor(div * 100)/ 100);

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