有一种简单的方法可以将除法结果舍入为大整数吗?
我想有这个:
18/20 -> 1
19/20 -> 1
20/20 -> 1
21/20 -> 2
22/20 -> 2
23/20 -> 2
......等等......
38/20 -> 2
39/20 -> 2
40/20 -> 2
41/20 -> 3
42/20 -> 3
43/20 -> 3
我必须管理NSNumberFormatter的东西吗?
我没有成功获得一个整数值,并进行整数比较。
提前致谢!
答案 0 :(得分:2)
您使用了math.h
中提供的标准ceil()
和ceilf()
函数
答案 1 :(得分:2)
int x, y;
int result = (x + (y-1)) / y;
测试:
int n = 20;
for (int i = 1; i <= 50; i++) {
NSLog(@"%d+(%d-1) / %d = %d", i, n, n, (i+(n-1))/n);
}
答案 2 :(得分:0)
标准C支持double ceil(double x)
和long double ceill(long double x)
。也许iPhone有这些?如果你的数据首先是整数,那么你要么必须找到一个聪明的技巧,要么首先将你的整数转换为双数。
答案 3 :(得分:0)
NSNumberFormatter
。除了已经提到的基元的c函数之外,您还可以使用NSDecimalNumber
和NSDecimalNumberHandler
来执行NSNumber
的给定实例的计算和舍入。如有疑问,请参阅文档。 Number and Value Programming Guide
要划分的示例代码,向上舍入到下一个整数并显示结果。
NSDecimalNumber *denominator = [NSDecimalNumber decimalNumberWithDecimal:[[NSNumber numberWithInteger:20] decimalValue]];
NSDecimalNumberHandler *numberHandler = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundUp scale:0 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
for (NSInteger counter = 1; counter <= 50; counter++) {
NSDecimalNumber *numerator = [NSDecimalNumber decimalNumberWithDecimal:[[NSNumber numberWithInteger:counter] decimalValue]];
NSDecimalNumber *result = [[numerator decimalNumberByDividingBy:denominator withBehavior:numberHandler] retain];
NSLog(@"%@/%@ -> %d", numerator, denominator, [result integerValue]);
[result release];
}