首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >600851475143的"Integer number too large“错误消息

600851475143的"Integer number too large“错误消息
EN

Stack Overflow用户
提问于 2010-09-21 14:18:32
回答 8查看 175.7K关注 0票数 97
代码语言:javascript
复制
public class Three {
    public static void main(String[] args) {
        Three obj = new Three();
        obj.function(600851475143);
    }

    private Long function(long  i) {
        Stack<Long> stack = new Stack<Long>();

        for (long j = 2; j <= i; j++) {
            if (i % j == 0) {
                stack.push(j);
            }
        }
        return stack.pop();
    }
}

当运行上面的代码时,它会在obj.function(600851475143);行上产生一个错误。为什么?

EN

回答 8

Stack Overflow用户

发布于 2010-09-21 14:20:36

600851475143不能表示为32位整数(类型为int)。它可以表示为64位整数(类型为long)。Java中的长文字以“L”结尾:600851475143L

票数 223
EN

Stack Overflow用户

发布于 2010-09-21 14:20:43

追加后缀L23423429L

默认情况下,java将所有数字字面值解释为32位整数值。如果您想明确指定这是大于32位整数的值,则应该对长值使用后缀L

票数 81
EN

Stack Overflow用户

发布于 2010-09-21 14:20:07

您需要使用一个长文字:

代码语言:javascript
复制
obj.function(600851475143l);  // note the "l" at the end

但我预计该函数会耗尽内存(或时间)……

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3757763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档