【问题标题】:What is the real long type range in java?java中真正的长类型范围是什么?
【发布时间】:2012-10-23 11:13:59
【问题描述】:

根据我找到的所有参考资料,Java 中的 long 类型范围从 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807。 我在下面写了以下代码,

public static void main(String[] args){
    long x = 12 * 24 * 60 * 1000 * 1000; 
    long y = 12 * 60 * 1000 * 1000;
    System.out.print(x / y); 
}

预期结果是 24;但输出为 0。

【问题讨论】:

  • 整个事物被评估为int,然后转换为long。
  • 您需要明确定义要使用 long 而不是 int 像 12l.

标签: java types primitive-types


【解决方案1】:

在您的代码中,12 * 24 * 60 * 1000 * 1000 被评估为整数。然后你将它分配给 long。

试试

long x = 12L * 24 * 60 * 1000 * 1000; 
    long y = 12L * 60 * 1000 * 1000;
    System.out.print(x / y); 
}

【讨论】:

  • Aura,您的代码错误,因为 java 将 (12 * 24 * 60 * 1000 * 1000) 的值解释为 int。然后你将这个整数值存储到 long 类型的变量中。
  • 比如你不能写short a = 50; a = 50 + a; 因为您将尝试将 int 值存储到短变量中。
【解决方案2】:

你的文字是 int 的...

这给出了 x = 100130816 而不是 17280000000

给你:

public static void main(String[] args) {
        long x = 12L * 24L * 60L * 1000L * 1000L;
        long y = 12L * 60L * 1000L * 1000L;
        System.out.print(x + " " + y + " " + x / y);

}

结果是 24

附:我第一次解决了这个问题,但是您删除了问题...

【讨论】:

  • 请使用L 而不是l 作为长指示符。两者都同样有效,但其中一个更有可能在某些字体中被误认为1(是的,我知道好的编码字体没有那么多问题,但为什么会有问题,什么时候这么容易避免?)
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多