You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java整数乘法输出错误,如何解决该问题?

解决Java中整数乘法溢出导致结果错误的问题

问题重现

Java代码

public class main {
    public static void main(String[] args) {
        System.out.println(1101101101*10);
    }
}

执行输出

-1873890878

Python中的正确计算结果

Microsoft Windows [Version 10.0.19044.2251]
(c) Microsoft Corporation. All rights reserved.

C:\Users\pradeep>python
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 1101101101*10
11011011010

问题原因

Java中1101101101和10默认是int类型(32位有符号整数),取值范围为-2147483648到2147483647。而1101101101 * 10 = 11011011010,这个数值远超出int的最大值,触发了整数溢出。Java对溢出的整数会进行循环取模处理,最终得到负数结果。

Python的int类型是动态扩展的,没有固定位数限制,因此可以正确计算大数乘法。

解决方法

要避免溢出,需使用更大范围的long类型(64位有符号整数,取值范围-9223372036854775808到9223372036854775807),有两种常用实现方式:

1. 指定字面量为long类型

在其中一个数字后添加L(推荐大写,避免与数字1混淆),让乘法运算自动以long类型执行:

public class main {
    public static void main(String[] args) {
        System.out.println(1101101101L * 10);
    }
}

2. 显式转换类型

将其中一个int值强制转换为long后再计算:

public class main {
    public static void main(String[] args) {
        System.out.println((long)1101101101 * 10);
    }
}

两种方式执行后都会输出正确结果:

11011011010

内容的提问来源于stack exchange,提问作者Pradeep Simba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:05:23