小数点控制

时间:2015-09-16 13:43:52

标签: java

我正在执行一个程序,它将打印出一组数字的总和和平均值。我对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);
            }

        }

3 个答案:

答案 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;