我正在尝试转换一组数字,使每个数字只有一个非零数字。 所以基本上
"7970521.5544"
会给我
["7000000", "900000", "70000", "500", "20", "1", ".5", ".05", ".004", ".0004"]
我试过:
var j = "7970521.5544"
var k =j.replace('.','')
var result = k.split('')
for (var i = 0; i < result.length; i++) {
console.log(parseFloat(Math.round(result[i] * 10000) /10).toFixed(10))
}
任何想法,我不确定从这里去哪里?
最佳答案
算法:
10
次幂,例如:
value = value * Math.pow(10, index); // for digits before decimal
value = value * Math.pow(10, -1 * index); // for digits after decimal
var n = "7970521.5544"
var arr = n.split('.'); // '7970521' and '5544'
var left = arr[0].split('').reverse(); // '1250797'
var right = arr[1].split(''); // '5544'
for(let i = 0; i < left.length; i++)
left[i] = (+left[i] * Math.pow(10, i) || '').toString();
for(let i = 0; i < right.length; i++)
right[i] = '.' + +right[i] * Math.pow(10, -i);
let res = left.reverse() // reverses the array
.filter(n => !!n)
// ^^^^^^ filters those value which are non zero
.concat(right.filter(n => n !== '.0'));
// ^^^^^^ concatenation
console.log(res);
关于javascript - 按小数位格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636724/