You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据给定值向下取整到最近百位/千位设置图表Y轴最大值?

优化Y轴顶部数值计算函数

需求说明

给定一个数值,返回其所在整百区间的起始值:

  • 100-199.9 → 返回100
  • 200-299.9 → 返回200
  • ...
  • 10000-10099.9 → 返回10000(以此类推)

原繁琐实现

private func chartTopValueFromGivenValue(givenValue: Float) -> Float {
    let startNumber:Float = 100.0
    let endNumber:Float = 199.9
    let numberRange = startNumber...endNumber
    
    if numberRange.contains(barsValueMax) {
        return 100.0
    }
    
    let startNumber2:Float = 200.0
    let endNumber2:Float = 299.9
    let numberRange2 = startNumber2...endNumber2
    
    if numberRange2.contains(barsValueMax) {
        return 200.0
    }
    
    let startNumber3:Float = 300.0
    let endNumber3:Float = 399.9
    let numberRange3 = startNumber3...endNumber3
    
    if numberRange3.contains(barsValueMax) {
        return 300.0
    }
    
    let startNumber4:Float = 300.0
    let endNumber4:Float = 499.9
    let numberRange4 = startNumber4...endNumber4
    
    if numberRange4.contains(barsValueMax) {
        return 400.0
    }
    
    let startNumber5:Float = 500.0
    let endNumber5:Float = 599.9
    let numberRange5 = startNumber5...endNumber5
    
    if numberRange5.contains(barsValueMax) {
        return 500.0
    }
    
    let startNumber6:Float = 600.0
    let endNumber6:Float = 699.9
    let numberRange6 = startNumber6...endNumber6
    
    if numberRange6.contains(barsValueMax) {
        return 600.0
    }
    
    return 0.0
}

优化解法

利用数学运算替代重复的区间判断,一行核心逻辑即可实现需求,同时修复原代码中的区间错误:

private func chartTopValueFromGivenValue(givenValue: Float) -> Float {
    guard givenValue >= 100 else { return 0.0 }
    return floor(givenValue / 100) * 100
}

逻辑说明

  1. 先判断数值是否小于100,符合则直接返回0(和原代码逻辑一致)
  2. 将给定值除以100后,用floor()取向下取整(舍去小数部分)
  3. 再将结果乘回100,得到对应整百区间的起始值

示例验证

  • 输入150 → 150/100=1.5 → floor后1 → 1*100=100
  • 输入299.9 → 299.9/100=2.999 → floor后2 → 2*100=200
  • 输入10099.9 → 10099.9/100=100.999 → floor后100 → 100*100=10000
  • 输入500 → 500/100=5 → floor后5 → 5*100=500

内容的提问来源于stack exchange,提问作者I Don't Tell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:33:15