前端js字符串实现大数相加(含小数点)
时间: 2023-10-13 20:06:41 浏览: 141
好的,关于前端js字符串实现大数相加(含小数点),可以采用如下思路:先将两个字符串补齐小数点后的位数,然后从末位开始逐位相加,使用一个进位标志位记录进位的情况。最后将结果转换为字符串输出。具体实现可以参考以下代码:
```
function add(num1, num2) {
num1 = num1.toString();
num2 = num2.toString();
var idx1 = num1.indexOf('.');
var idx2 = num2.indexOf('.');
var len1 = idx1 === -1 ? 0 : num1.length - idx1 - 1;
var len2 = idx2 === -1 ? 0 : num2.length - idx2 - 1;
var len = Math.max(len1, len2);
if (len1 < len) {
num1 += Array(len - len1 + 1).join('0');
}
if (len2 < len) {
num2 += Array(len - len2 + 1).join('0');
}
var ans = [];
var carry = 0;
for (var i = num1.length - 1; i >= 0; i--) {
var sum = carry + parseInt(num1.charAt(i)) + parseInt(num2.charAt(i));
carry = Math.floor(sum / 10);
ans.unshift(sum % 10);
}
if (carry > 0) {
ans.unshift(carry);
}
var dotIdx = ans.length - len;
if (len > 0) {
if (dotIdx <= 0) {
ans.unshift('0');
dotIdx = 1;
}
ans.splice(dotIdx, 0, '.');
}
return ans.join('');
}
```
使用方法如下:
```javascript
console.log(add('123456789.123456789', '987654321.987654321'));
// 输出: '1111111111.11111111'
```
阅读全文