在我的代码中,我有一个双号2.555
。我通过NSLog使用%.2f
来显示它有2.55
,但输出是2.56。这是我不想要的数字的四舍五入!我知道有ceil(double)
和floor(double)
被使用,但他们不帮助我在这里。防止双数舍入
double div = a/b;
NSLog(@"DIV = %.f", div);
在我的代码中,我有一个双号2.555
。我通过NSLog使用%.2f
来显示它有2.55
,但输出是2.56。这是我不想要的数字的四舍五入!我知道有ceil(double)
和floor(double)
被使用,但他们不帮助我在这里。防止双数舍入
double div = a/b;
NSLog(@"DIV = %.f", div);
没有看到您的代码是不可能找到错误。下面的代码将根据您的需要工作。
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:2.555]];
NSLog(@"%@",numberAsString);
[numberFormatter release];
,你可以参考,这个链接NSNumberFormatter
哦谢谢它确实工作。难道不能以更简单的方式完成吗?或者我应该始终记住NSNumberFormatter? – HusseinB 2013-03-16 12:54:25
问题在于打印格式说明符如何在C中工作。这是一个合理的Objective-C解决方案。 – uchuugaka 2013-03-16 12:56:43
它不能以更简单的方式完成然后这(据我所知)。你必须为此使用NSNumberFormatter。 – Aravindhan 2013-03-16 12:59:00
我觉得还有一个更简单的方法来做到这一点。 如果我正确理解你,你不想使用floor(),因为你想保持“div”的内容不变。如果这是正确的,那么你可以做到以下几点。 NSLog(@“DIV =%.2f”,trunc(div * 100)/ 100);
NSLog(@“DIV =%.2f”,floor(div * 100)/ 100);
以上将在第二秒后删除小数点,但仅用于显示。 “div”的内容不变。
你可以在这里发布你的代码吗? – Aravindhan 2013-03-16 12:43:46
问题是,为什么你不想让数字四舍五入,但只是截断了?对于'2.555',输出'2.55'无效。 – Sulthan 2013-03-16 13:36:33