
本文介绍一种纯数学方法,通过计算位数和幂运算,将一个整数“拼接”到另一个整数的左侧,例如将 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
}⚠️ 注意事项:
- Math.log10() 对 digits = 0 未定义,因此必须单独处理 digits == 0 的情况;
- 浮点运算存在精度风险(如 Math.log10(1000) 可能返回 2.9999999),故需用 (int) 截断而非 Math.round(),并确保 digits > 0;
- 若需支持负数,建议先取绝对值计算,再根据符号统一处理(如 digits
- 此方法依赖 int 范围(约 ±21 亿),拼接后可能溢出,生产环境建议使用 long 或校验 finalNum 是否溢出。
总结:左拼接的本质是位移对齐 + 算术相加。相比字符串 String.valueOf(digits) + String.valueOf(num) 再解析,该方案更轻量、无对象创建开销,适合嵌入式、高频数值计算等对性能敏感的场景。










