Orion's Studio.

字符串格式数字的乘法

2024/03/23

BigInt

声明方式

1
2
3
const a = 1n;
const b = new BigInt(1);
const c = new BigInt("1");

BigInt 和 Number 区别

  • BigInt 不能用于 Math 对象的方法
  • BigInt 不能和 Number 混合运算
  • BigInt 被转化为 Number 可能会丢失精度

字符串格式数字的乘法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function multiply(a, b) {
if (a === "0" || b === "0") {
return "0";
}
const aArr = a.split("").reverse(); // 123 -> [3, 2, 1]
const bArr = b.split("").reverse(); // 456 -> [6, 5, 4]
const result = [];
for (let i = 0; i < aArr.length; i++) { // 3 * 6, 3 * 5, 3 * 4, 2 * 6, 2 * 5, 2 * 4, 1 * 6, 1 * 5, 1 * 4
for (let j = 0; j < bArr.length; j++) {
const index = i + j;
result[index] = (result[index] || 0) + aArr[i] * bArr[j];
}
}
for (let i = 0; i < result.length; i++) {
if (result[i] >= 10) {
result[i + 1] = (result[i + 1] || 0) + Math.floor(result[i] / 10);
result[i] = result[i] % 10;
}
}
return result.reverse().join("");
}
CATALOG
  1. 1. BigInt
    1. 1.1. 声明方式
    2. 1.2. BigInt 和 Number 区别
  2. 2. 字符串格式数字的乘法