尽管变量的类型被声明为双精度型,为什么 java 会给出一个 int 太大的错误?

Java 为我的代码的相应行提供了整数太大的错误消息,我将在代码的相应段中用 ***** 表示:


...


if (input.hasNextDouble()) {

    double number = input.nextDouble();

    if (number >= 10000000000) //***** {

        System.out.print("The number is greater than 10 billion!");

    }

}


...

我认为double类型可以记录大约15个十进制数字。你能告诉我这是怎么回事吗?


九州编程
浏览 147回答 3
3回答

森林海

Java 抱怨源代码中的实际数字,即整数文字,而不是您为其选择的存储位置(这将需要自动转换)。由于该语言说任何无后缀的数字都被解释为int,因此您需要为您希望该文字具有的类型添加后缀,例如dfor double: number >= 10000000000D

UYOU

您将 int 与 double 进行比较的事实不会改变可接受的 int 值。如果您将数字设为两倍,则可能会更清楚。if (number > 1e10) {    System.out.print("The number is greater than 10 billion!");顺便说一句,>如果消息“大于”,我会使用,否则我会if (number >= 1e10) {    System.out.print("The number is greater than, or equal to 10 billion!");

守着星空守着你

答案应该是因为10000000000是int并且它不能被存储,因为它大于2,147,483,647,这就是为什么你得到的错误整数太大要解决问题,请Double通过附加dif (number >= 10000000000d) //***** {    System.out.print("The number is greater than 10 billion!");}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java