iOS数字向上取整不足补零

我司最近在做金融软件,需要绘制分时和K线图,在做Y轴指标的时候,需要将数值进行取整补零的运算。

先看一下产品需求,Y轴刻度生成规则:中轴为0,取图内DIFF、DEA、STICK三项指标最高绝对值时点值前两位向上取5的最小倍数,剩下位数以0填充,后将该值2等分并分别在中轴上下标识刻度。例如当前图内最高时点值为-1623,则前两位16向上取5的最小倍数为20,取值为2000,2等分后刻度分别为2000、1000、0、-1000、-2000。

后台返回的数值都是float型的,直接向上取整简单,调用ceilf()函数即可;

    NSInteger a = ceil(34.98071);
    NSLog(@"%ld",a); //输出35

实现算法是

- (NSInteger )generateMaxInterValue:(float)maxValue {
    if (maxValue<0) {
        maxValue = ABS(maxValue); //负数取绝对值
    }
    NSInteger maxInt = 0;
    NSString *maxValueStr = [NSString stringWithFormat:@"%f",maxValue]; //先转成字符串
    if ([maxValueStr containsString:@"."]) {
        NSArray *strArray = [maxValueStr componentsSeparatedByString:@"."];
        NSString *firstStr = [strArray firstObject];
        if (firstStr.length>1) { // 大于10的数值
            NSString *subStr = [maxValueStr substringWithRange:NSMakeRange(0, 2)];
            NSInteger subInt = subStr.intValue;
            maxInt = (subInt / 5 * 5 + 5) * pow(10, firstStr.length - 2);
        }else { //小于10的数值
            maxInt = (firstStr.integerValue / 5 * 5 + 5);
        }
    }
    return maxInt;
}

以上就是一个简单的算法,大家有什么更好的方案的话,欢迎讨论!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • hello world
    sunboyCoco阅读 150评论 0 0
  • 第一次知道简书,是从纯银大大的微博看到的。 后来发现这里的很不错,网站、客户端的风格我都很喜欢,是一个比较纯粹的地...
    Lance_Yang阅读 296评论 0 1
  • 人生三天 赵集中学八3班唐龙飞 我的人生只有三天:昨天、今天和明天。 昨天 昨天的我,无心学习。上课总时不时地开小...
    舒心语文阅读 237评论 0 0
  • 今天早上7:25分我吃完了早饭就去上学了,7:35分我来到了学校放下了沉重的书包,拿起扫帚就想飞奔到卫生区去,因...
    旗开得胜6555阅读 248评论 0 5