数字字符串转为千分位

126 阅读1分钟

去除前导零

  1. 使用数据转换

parseFloat 是将字符串解析为浮点数函数

parseInt 将字符串转为数字

较大的数据转换会丢失数据精度

JavaScript 的 Number 类型基于 IEEE 754 标准,能够安全表示的整数范围是 -2^53 + 1 到 2^53 - 1(即 -9007199254740991 到 9007199254740991)。超出这个范围的整数可能会导致精度丢失

BigInt 任意精度整数的数据类型,注意是否都小数,BigInt不能处理小数点的字符串

使用BigInt 输出结果带有 n 后缀,这是 BigInt 类型的一个特性

可以直接使用 toString() 方法将其转换为字符串

let str1 = "0000077134900601876576";
BigInt(str1).toString()
  1. 使用正则
// 方法二:使用正则表达式
let str2 = "0000077134900601876576";
let result2 = str2.replace(/^0+/, '');
console.log(result2); // 输出: "77134900601876576"

3.使用 trimStart 和自定义逻辑

let str3 = "0000077134900601876576";
let result3 = str3.replace(/^0+(?!$)/, '');
console.log(result3); // 输出: "77134900601876576"

parseFloat:用于将字符串解析为浮点数。 去除前导零:可以使用正则表达式 str.replace(/^0+/, '') 去除前导零。 精度问题:对于非常大的整数,建议使用 BigInt 以避免精度丢失。

使用js中api实现

function strApi(){
        let a = s.split('.')
        let start = BigInt(a[0]).toString()
        let end = a[1]
        let st = start.toLocaleString()
        return end ? `${st}.${end}` : `${st}`;
}

正则实现

function strReg(){
        let a = s.split('.')
        let start = BigInt(a[0]).toString()
        let end = a[1]
        let st = start.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        return end ? `${st}.${end}` : `${st}`;
}

循环实现

function strFor(){
        let a = s.split('.')
        let start = BigInt(a[0]).toString()
        let start = a[0]
        let end = a[1]
        let result = [];
    let str = numStr.split('').reverse();

    for (let i = 0; i < str.length; i++) {
        if (i > 0 && i % 3 === 0) {
            result.push(',');
        }
        result.push(str[i]);
    }

    let st = result.reverse().join('');
        return end ? `${st}.${end}` : `${st}`;
}