在javascript中用最后的零来将数字排成最接近的数字

时间:2017-11-17 11:46:10

标签: javascript arrays underscore.js lodash

我有一些块如下例:

CREATE TABLESPACE xxx

我想从这些块中得到的是这样的:

// lowest and highest values of chunk arrays
[
    [0, 945710.3843175517],
    [945710.3843175517, 2268727.9557668166],
    [2268727.9557668166, 14965451.25314727],
    [14965451.25314727, 17890252.39415521],
    [17890252.39415521, 3501296406.880383]
]

我将使用这些新数字作为信息地图的图例。

我使用一个函数来为每个值实现名为< 1.000.000 1.000.000 - 3.000.000 3.000.000 - 15.000.000 15.000.000 - 18.000.000 > 10.000.000 的目标。

所有数字均为正数,没有最大限制。

roundClosestLegendNumber

2 个答案:

答案 0 :(得分:1)

我将乘数的比较从10 *更改为100 *,以便在0系列之前获得2位数的精度。

var roundClosestLegendNumber = function(number) {
    if(number < 10) {
        return number;
    }

    var multiplier = 10;
    while(number >= 100 * multiplier) {
        multiplier = 10 * multiplier;
    }

    count = 1;
    while(number > multiplier * count) {
        count++;
    }

    return multiplier * count;
}

答案 1 :(得分:0)

你可以使用有效数字,设置sf(我将我的设置为3)然后只显示前3个数字。

function sigFigure(v) {
  let sf = 3;
  if (v >= Math.pow(10,sf)) {
    let number = v.toPrecision(sf);
    let numbers = number.split("e+")
    return parseInt((numbers[0]*Math.pow(10,numbers[1])).toFixed(0));
  } else {
    return v
  }
}

var array = [0, 945710.38431755, 2268727.9557668166, 14965451.25314727, 17890252.39415521, 3501296406.880383];

console.log(array.map(sigFigure));