我正在执行一个程序,它将打印出一组数字的总和和平均值。我对java很陌生,而且我似乎无法弄清楚如何获得应该在平均值末尾的.7,我只得到.0。我不认为这与我的数学有关,我认为我的四舍五入的陈述中有一个错误。有人能指出这个错误吗?谢谢你们。
public class Program
{
public static void main (String[]args)
{
int a = 475;
int b = 821;
int c = 369;
int d = 562;
int e = a+b+c+d;
double f = e/4;
f=(int)(f*10+.5)/10;
System.out.println("The sum of the four numbers is "+ e + " and the average is "+ f);
}
}
答案 0 :(得分:3)
而不是double f = e/4;
,请double f = e/4.0;
使用e/4
,您将int
除以int
,结果为int
。结果随后分配给double
。这就是为什么你的结果中没有得到小数。
使用e/4.0
,您将int
除以double
,结果为double
。
答案 1 :(得分:0)
您丢失了小数点,因为e / 4是一个整数。尝试使用e / 4F将表达式指示为浮点数
double f = e/4F;
答案 2 :(得分:0)
如果整数除以另一个整数,则调用整数除法。输出将丢弃十进制值。
例如:
double v1 = 5/2; //Value of v1: 2.0 (0.5 discarded)
double v2 = 10/3; //Value of v2: 3.0 (0.333 discarded)
在此行的代码中会发生整数除法:
double f = e/4;
因此,所有十进制值都将被丢弃。
要保留小数值,您只需执行以下一个(表示其中一个操作数是十进制值,因此不会发生整数除法):
double f = e/4.0;
double f = e/(double)4;
double f = e/4d;