本文介绍一种纯数学方法,通过计算位数和幂运算,将一个整数“拼接”到另一个整数的左侧,例如将 456 添加到 123 左侧得到 456123,全程避免字符串转换。
在数值处理中,常需将一个数字“前置”到另一个数字的高位(即左侧),例如将 digits = 456 插入到 num = 123 前,得到 456123。与常见的右追加(如 num = num * 10 + digit)不同,左拼接需先确定 digits 的位数,再将 num 整体“腾出空间”,最后相加。
核心思路是:
✅ 计算 digits 的十进制位数 → 得到 10^k(k 为 digits 的位数)
✅ 将 digits 乘以 10^k → 相当于在其右侧补 k 个 0
✅ 加上原 num → 完成左拼接
以下是 Java 实现(适用于非零正整数):
int num = 123;
int digits = 456;
// 处理边界:若 digits 为 0,直接返回 num(或按需特殊处理)
if (digits == 0) {
System.out.println(num); // 或 return num;
} else {
// 计算 digits 的位数:log₁₀(digits) + 1,取整后作为指数
int digitCount = (int) Math.log10(digits) + 1;
int powerOfTen = (int) Math.pow(10, digitCount);
int finalNum = digits * powerOfTen + num;
System.out.println(finalNum); // 输出:456123
}
⚠️ 注意事项: