【问题标题】:Java int vs. DoubleJava int 与 Double
【发布时间】:2011-08-25 21:12:48
【问题描述】:
public double calc(int v1) {
return v1 / 2 + 1.5;
}


public double cald (double v) {
return v / 2 + 1.5;
}

函数返回相同的结果吗?

我认为它们不会返回相同的结果,因为第二个函数将包含小数点,而第二个函数会将数字向上舍入。

对吗?

【问题讨论】:

  • 你为什么不试试看呢? :)
  • @veredesmarald:他只能尝试2和2.0,关键是要找到好的测试用例

标签: java function double int


【解决方案1】:

当您将a 除以ba/b

如果 两者 a & bint 那么结果将是 int
else any or both a & b are double then result will be double

编辑:

另见我对这个问题的回答Simple Divide Problem

【讨论】:

    【解决方案2】:

    他们不会:see sample on IDEONE,克隆它并玩弄它。

    System.out.println(calc(1));// gives 1.5
    System.out.println(cald(1.0));// gives 2.0
    

    【讨论】:

      【解决方案3】:
      int v1 = 1;
      return v1 / 2 + 1.5; // = 1.5
      

      它是一个整数除以一个更双倍的整数。 或者在你的情况下 1 / 2,它是 0.5,但它是整数之间的一个除法,所以将是 0,更多 1.5,返回 1.5。

      double v = 1.0;
      return v / 2 + 1.5; // = 2.0
      

      这种情况下,除法是在 double 和 int 之间,返回值为 0.5 的 double,与 1.5 相加将返回 2.0。

      【讨论】:

        【解决方案4】:

        它们的返回值不同。 / 默认是整数除法,如果数字是整数,即 a/2 的结果是整数,如果 a 是整数,则没有提示。而如果 a 是双精度数,则此除法的结果是双精度数。

        5/2 = 2
        5.0/2 = 2.5
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-02
          • 1970-01-01
          • 2017-04-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多