我编写了一个简单的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。由于i1
和i2
均为整数。
如果您有int1/int2
,如果答案不是一个完美的整数,则小数点后的数字将被删除。在您的情况下2/5
为0.4,因此您将获得0。
你可以施放i1
或i2
到double
(其他的将被隐式转换)
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,因为它等效于: 如您所见,通过隐式插入强制类型转换可以避免该错误。
在前面的例子中,类型化的时间复杂度是多少? 是吗?