gpt4 book ai didi

javascript - 按小数位格式化数字

转载 作者:数据小太阳 更新时间:2023-10-29 05:14:03 26 4
gpt4 key购买 nike

我正在尝试转换一组数字,使每个数字只有一个非零数字。所以基本上

"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))
}

任何想法,我不确定从这里去哪里?

最佳答案

算法:

  • Split使用十进制表示法将数字分为两部分。

  • 运行一个 for 循环,将每个数字乘以相应的 10 次幂,例如:

    value = value * Math.pow(10, index); // for digits before decimal
    value = value * Math.pow(10, -1 * index); // for digits after decimal

  • 然后,filter非零元素和 concat enate 两个数组。 (记得重新reverse左边的数组)

    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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com