在 javascript 中将数字美化为末尾带零的最接近数字
Prettify numbers to their closest number with zeros at the end in javascript
我有一些块,如下例所示:
// 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
。
所有数字均为正数,没有最大限制。
roundClosestLegendNumber(5) \ should give 10
roundClosestLegendNumber(94) \ should give 100
roundClosestLegendNumber(125) \ should give 200
roundClosestLegendNumber(945710.3843175517) \ should give 1000000
roundClosestLegendNumber(14965451.25314727) \ should give 15000000
roundClosestLegendNumber(17890252.39415521) \ should give 18000000
// and so on
我将乘法器的比较从 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;
}
您可以使用有效数字,设置 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));
我有一些块,如下例所示:
// 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
。
所有数字均为正数,没有最大限制。
roundClosestLegendNumber(5) \ should give 10
roundClosestLegendNumber(94) \ should give 100
roundClosestLegendNumber(125) \ should give 200
roundClosestLegendNumber(945710.3843175517) \ should give 1000000
roundClosestLegendNumber(14965451.25314727) \ should give 15000000
roundClosestLegendNumber(17890252.39415521) \ should give 18000000
// and so on
我将乘法器的比较从 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;
}
您可以使用有效数字,设置 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));