当前位置: 首页 > 面试题库 >

使用int和double的Java程序

屠泰平
2023-03-14
问题内容

我编写了一个简单的Java程序,如下所示:

public class Test {

    public static void main(String[] args) {
        int i1 =2;
        int i2=5;
        double d = 3 + i1/i2 +2;
        System.out.println(d);
    }
}

由于变量d声明为double,所以我期望这个程序的结果是,5.4但是我得到的输出为5.0

请帮助我理解这一点。


问题答案:

i1/i2将为0。由于i1i2均为整数。

如果您有int1/int2,如果答案不是一个完美的整数,则小数点后的数字将被删除。在您的情况下2/5为0.4,因此您将获得0。

你可以施放i1i2double(其他的将被隐式转换)

double d = 3 + (double)i1/i2 +2;



 类似资料:
  • 我如何解释以下内容: 打印2.29999 打印2.3

  • 我很难确定何时使用int、double和long。 我正在计算整数的幂,只要提供的幂不是负数,就返回结果。 对于作业,我需要使用以下代码开始: 以下是我的想法: 我知道我弄乱了int、double或long的使用,但我不知道如何修复它。

  • 描述 (Description) C库函数double ldexp(double x, int exponent)返回x乘以2表示幂的exponent 。 声明 (Declaration) 以下是ldexp()函数的声明。 double ldexp(double x, int exponent) 参数 (Parameters) x - 这是表示有效数的浮点值。 exponent - 这是expo

  • 描述 (Description) C库函数double frexp(double x, int *exponent)返回值是尾数, exponent指向的整数是指数。 结果值是x = mantissa * 2 ^ exponent 。 声明 (Declaration) 以下是frexp()函数的声明。 double frexp(double x, int *exponent) 参数 (Param

  • 问题内容: 所以我的问题是:为什么不执行编译错误? 问题答案: 四种情况中的三种正确报告了错误。复合分配是该规则的唯一例外。Java语言规范,第15.26.2部分,解释了以下原因: 15.26.2复合赋值运算符 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 例如,以下代码是正确的: 并导致x的值为7,因为它等效于: 如您所见,通过隐式插入强制类型转换可以避免该错误。

  • 在前面的例子中,类型化的时间复杂度是多少? 是吗?