【问题标题】:Implicit conversion from int product to long?从 int 产品到 long 的隐式转换?
【发布时间】:2013-02-04 04:58:31
【问题描述】:

如果 2 个 int 值的乘积不适合 int,因此我将其存储在 long 中,是否需要在每个操作数之前指定显式转换为 long(或至少在操作数之一之前)?或者即使没有强制转换,编译器是否正确处理它?

这将是显式代码:

public final int baseDistance = (GameCenter.BLOCKSIZE * 3/2);

long baseDistanceSquare = (long)baseDistance * (long)baseDistance;

或者下面的代码就足够了吗?

long baseDistanceSquare = baseDistance * baseDistance;

【问题讨论】:

  • 投反对票的人,想解释一下你的投反对票吗?或者stackoverflow已经不允许初学者访问了?

标签: java android implicit-conversion multiplication


【解决方案1】:

附带说明,这相当于将整数运算的结果转换为浮点数的问题;例如:

    float f = 2/3;
    System.out.println(f);  // Print 0.0

    f = (float)(2/3);
    System.out.println(f);  // Print 0.0

    f = (float)2/3;
    System.out.println(f);  // Print 0.6666667

【讨论】:

    【解决方案2】:

    从头开始。我读错了。您必须强制转换它以防止溢出。

    【讨论】:

      【解决方案3】:

      正确的代码是:

      long baseDistanceSquare = (long)baseDistance * (long)baseDistance;
      

      cast value end 运行一个数学函数

      其他例子:

      int X;
      long Y, Z;
      Z = X * Y; // Result is int value
      Z = (long) X * Y   //Result is long value
      Z = X * 1L //Result is long value
      

      【讨论】:

        猜你喜欢
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-11
        • 1970-01-01
        • 2012-05-23
        • 2015-09-16
        相关资源
        最近更新 更多