Open nfssuzukaze opened 3 years ago
const add = (a, b) => { const numberA = a.split('').reverse() const numberB = b.split('').reverse() const result = [] for (let i = 0, carry = 0; i < numberA.length || i < numberB.length || carry; i ++) { if (i < numberA.length) carry += numberA[i] - 0 if (i < numberB.length) carry += numberB[i] - 0 result.push(carry % 10) carry = carry / 10 >> 0 } return result.reverse().join('') }
const sub = (a, b) => { const numberA = a.split('').reverse() const numberB = b.split('').reverse() const result = [] for (let i = 0, carry = 0, sum = 0; i < numberA.length; i ++) { sum = numberA[i] - carry if (i < numberB.length) sum -= numberB[i] result.push((sum + 10) % 10) if (sum < 0) carry = 1 } while (result[result.length - 1] === 0 && result.length > 1) result.pop() return result.reverse().join('') }
const mul = (a, b) => { const numberA = a.split('').reverse() const result = [] for (let i = 0, carry = 0; i < numberA.length || carry; i ++) { if (i < numberA.length) carry += (numberA[i] - 0) * b result.push(carry % 10) carry = carry / 10 >> 0 } return result.reverse().join('') }
const div = (a, b) => { const numberA = a.split('').reverse() const result = [] for (let i = numberA.length - 1, carry = 0; i >= 0; i --) { carry = carry * 10 + (numberA[i] - 0) result.push(carry / b >> 0) carry %= b } while (result[0] === 0 && result.length > 1) result.shift() return result.join('') }
高精度整数的加减乘除
1. 高精度整数的加法
2. 高精度整数的减法
3. 高精度整数与低精度整数的乘法
4. 高精度整数与低精度整数的除法