让我说我跟随NSInteger
:
是否有像这些数字一样转换(四舍五入)的函数,如:
答案 0 :(得分:2)
查看您要求的结果,小于100的数字四舍五入到最接近的5,并且那些数字四舍五入到最接近的10.通过这样做,您可以得到所需的结果
- (NSInteger)roundToNearest:(NSInteger)inputNum
{
if (inputNum < 100){
return roundf(inputNum / 5.0f) * 5;
}
else {
return roundf(inputNum / 10.0f) * 10;
}
}
答案 1 :(得分:1)
//此通用功能可以解决您根据需要修改它的目的。
- (NSInteger)roundOffNumberToNearestCompleteNo:(NSInteger)number
{
if(number <= 0)
return 0;
NSString *strNumber = [NSString stringWithFormat:@"%ld",number];
NSInteger digitCount = [strNumber length];
if(digitCount == 1)
{
if(number <= 5)
{
return 1;
}
else
{
return 10;
}
}
NSString *strNumberUnit = @"1";
for(int i = 1; i < digitCount; i++)
{
strNumberUnit = [strNumberUnit stringByAppendingString:@"0"];
}
NSInteger numberUnit = [strNumberUnit integerValue];
NSInteger reminder = number%numberUnit;
if(reminder <= (numberUnit/2))
{
number = number - reminder;
}
else
{
number = number + (numberUnit - reminder);
}
return number;
}
答案 2 :(得分:0)
可能更容易自己实现:
- (NSInteger)roundOff:(NSInteger)number
{
NSInteger remainder = number % 5;
NSInteger quotient = number / 5;
if (remainder > 0) {
return (quotient + 1) * 5;
}
else {
return quotient * 5;
}
}
答案 3 :(得分:0)
你应该使用
- (NSInteger)roundFive:(NSInteger)number
{
return roundf(number/5.)*5;
}
答案 4 :(得分:0)
为什么不使用更通用且可重复使用的方法?这似乎适用于所有有效的NSIntegers,包括负数和div0的检查,但有人让我知道他们是否发现了一个缺陷:
- (NSInteger)roundInteger:(NSInteger)num toNearestInteger:(NSInteger)roundTo
{
if (!roundTo) { return 0; }
return (roundTo * round((float)num / roundTo));
}