Echarts geo地图 visualMap 自定义 分段

这篇博客介绍了两个JavaScript函数,用于数值处理和分段函数的创建。`toCeil`函数用于将数值四舍五入到指定的小数位数,而`getPieces`函数根据最大值、分段数量和是否显示百分比创建分段标签,解决了精度问题并确保等分。
摘要由CSDN通过智能技术生成
/*
	value: 需要处理的数值
	num: 保留几位小数
*/
export function toCeil (value, num) {
  let val = Math.ceil(value * Math.pow(10, num)) / Math.pow(10, num) + ''
  if (num > 0) {
    const intp = val.split('.')[0]
    const decp = val.split('.')[1] || ''
    if (decp.length < num) {
      val = `${intp}.${decp.padEnd(num, '0')}`
    }
  }
  return +val
}
/*
	max: 分段最大值
	splitNum: 分为几段
	isPercentage: 是否分段label中显示百分号
	注:此处为防止精度问题,引入了Decimal库
*/
export function getPieces (max = 0, splitNum = 5, isPercentage = false) {
  const unit = isPercentage ? '%' : ''
  let interval = max / splitNum
  if (interval !== toCeil(interval, 2)) {
    // 除不尽保留2为小数,保持进1
    interval = toCeil(interval, 2)
    max = toCeil(interval * splitNum, 2)
  }
  const pieces = [
    {
      max: interval,
      min: 0,
      label: `0 - ${interval}${unit}`
    }
  ]
  let i = 1
  while (i < splitNum) {
    const max = +(new Decimal(pieces[i - 1].max).add(interval))
    const min = +(new Decimal(pieces[i - 1].max))
    pieces[i] = {
      max,
      min,
      label: `${min}${unit} - ${max}${unit}`
    }
    i++
  }
  return pieces
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值