我正在做一个简单的家庭作业,并且我的计算有问题。 我的计算器的答案是4.83,但我的编译器说4.00。怎么能纠正这个? 这是我困难的部分。
double test = 29/6;
System.out.printf("%.2f",test);
System.out.println(test);
答案 0 :(得分:3)
如果您划分两个integers
,则结果始终为integer
您必须将一个号码从int
转换为double
。
double test = (double)29/6;
System.out.printf("%.2f",test);
System.out.println(test);
请注意,如果您只是编号,则会将其视为int
重要的是,代码打印4.00 :
double test = (double)(29/6);
System.out.printf("%.2f",test);
System.out.println(test);
因为首先它除了两个整数,因此结果也是整数,然后它被转换成加倍。
使用(double)29/6
与((double)29)/6
相同,因为投射具有更高的优先级。
答案 1 :(得分:1)
这是因为除法的两个操作数都是int
,因此整个结果被截断为int
类型。制作像这样的操作数double
,一切正常。
double test = 29.0/6.0;
答案 2 :(得分:0)
它正在进行整数除法,它会截断小数点右边的所有内容,因此你得到4。
尝试以下方法:
double test = 29.0/6;
System.out.printf("%.2f",test);
System.out.println(test);
输出:
4.83
4.833333333333333