去除前导零
- 使用数据转换
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()
- 使用正则
// 方法二:使用正则表达式
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}`;
}