[英]IOS Charts - YAxis scaling number round to nearest hundred, thousands, etc
[英]iOS : round off to nearest number
可以說我一直在關注NSInteger
的:
是否有一個函數可以像這些數字一樣轉換(四舍五入):
查看您請求的結果,將小於100的數字四舍五入到最接近的5,將超過100的數字四舍五入到最接近的10。這樣,您可以獲得所需的結果
- (NSInteger)roundToNearest:(NSInteger)inputNum
{
if (inputNum < 100){
return roundf(inputNum / 5.0f) * 5;
}
else {
return roundf(inputNum / 10.0f) * 10;
}
}
//此泛型函數可以解決您可以根據需要對其進行修改的目的。
- (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;
}
可能自己更容易實現:
- (NSInteger)roundOff:(NSInteger)number
{
NSInteger remainder = number % 5;
NSInteger quotient = number / 5;
if (remainder > 0) {
return (quotient + 1) * 5;
}
else {
return quotient * 5;
}
}
你應該用
- (NSInteger)roundFive:(NSInteger)number
{
return roundf(number/5.)*5;
}
為什么不使用更通用,因此可重用的方法? 這似乎適用於所有有效的NSInteger,包括負數和div0檢查,但有人讓我知道它們是否發現缺陷:
- (NSInteger)roundInteger:(NSInteger)num toNearestInteger:(NSInteger)roundTo
{
if (!roundTo) { return 0; }
return (roundTo * round((float)num / roundTo));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.