JS怎么将科学记数法不丢失精度转换成正常数值或者字符串?

在 JavaScript 中,科学记数法(例如 1.23e+5)表示法可以通过以下方法转换为正常数值或字符串,并且保持精度。

方法 1: 使用 toStringNumber 对象

1. 转换为正常数值

JavaScript 的 Number 对象可以自动处理科学记数法。直接使用 Number 对象将科学记数法的字符串转换为正常的数值:

javascript
let scientificNotation = '1.23e+5'; let numberValue = Number(scientificNotation); console.log(numberValue); // 输出: 123000

2. 转换为字符串

如果你希望将科学记数法转换为普通的字符串格式(例如,不使用科学记数法),可以使用 toLocaleStringtoFixed 方法:

javascript
let scientificNotation = '1.23e+5'; let numberValue = Number(scientificNotation); // 转换为普通字符串 let normalString = numberValue.toLocaleString('en-US'); // 根据地区设置格式 console.log(normalString); // 输出: 123,000 // 或者使用 toFixed 方法,指定小数位数 let fixedString = numberValue.toFixed(0); // 设置为 0 小数位 console.log(fixedString); // 输出: 123000

方法 2: 使用正则表达式和数学运算

对于更复杂的场景,可以手动解析科学记数法的字符串,并计算其对应的正常数值:

javascript
function convertScientificNotation(scientificNotation) { // 解析科学记数法的字符串 let [base, exponent] = scientificNotation.toLowerCase().split('e'); base = parseFloat(base); exponent = parseInt(exponent); // 计算正常数值 let normalValue = base * Math.pow(10, exponent); return normalValue; } let scientificNotation = '1.23e+5'; let numberValue = convertScientificNotation(scientificNotation); console.log(numberValue); // 输出: 123000

方法 3: 使用 BigInt(对于大整数)

对于非常大的整数,JavaScript 的 BigInt 类型可以保持高精度,但不支持小数。此方法适用于处理整数科学记数法表示:

javascript
let scientificNotation = '1.23e+5'; let numberValue = BigInt(parseFloat(scientificNotation)); // 先转换为普通数值再转为 BigInt console.log(numberValue.toString()); // 输出: 123000n

总结

  • 正常数值:使用 Number 对象直接转换科学记数法。
  • 普通字符串:使用 toLocaleStringtoFixed 方法转换为普通字符串格式。
  • 手动解析:通过正则表达式解析科学记数法,并计算正常数值。
  • 大整数:使用 BigInt 类型处理大整数的科学记数法。

关键字

JavaScript, 科学记数法, 转换, 精度, Number, toString, toLocaleString, toFixed, 正则表达式, BigInt