程序平均运行不如我预期

时间:2018-10-31 05:20:06

标签: java

当我运行程序时,DecimalFormat不符合我的预期。 示例:当我输入点3.2 3.5 4.9时,我希望结果是3.8 但是:3.8666667143503823。 当我输入点2 2 2时,结果:2.0 为什么?

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào điểm môn chuyen can :");
        double diemChuyenCan = scanner.nextFloat();
        System.out.println("Nhập vào điểm kiểm tra: ");
        double diemKiemTra = scanner.nextFloat();
        System.out.println("Nhập vào điểm học kỳ: ");
        double diemHocKy = scanner.nextFloat();

        DecimalFormat dcf = new DecimalFormat("#.#");
         double diemMonHoc = (diemChuyenCan + diemKiemTra + diemHocKy) /3;
         dcf.format(diemMonHoc);
        if(diemMonHoc>=8) {

            System.out.println("Điểm trung bình là: "+ diemMonHoc + " Môn 
        học giỏi");
        }else if(diemMonHoc >= 6.5 && diemMonHoc < 8){

            System.out.println(" Môn học  khá");
        }else if( diemMonHoc >= 5 && diemMonHoc < 6.5) {

            System.out.println(diemMonHoc +" Môn học trung bình");
        }else {

            System.out.println(diemMonHoc +" Môn học kém");
        }
    }

2 个答案:

答案 0 :(得分:0)

无需深入了解代码的逻辑(不理解术语)

DecimalFormat dcf = new DecimalFormat("#.#");
double diemMonHoc = (diemChuyenCan + diemKiemTra + diemHocKy) /3;

// format returns a String, so use that
String formattedDate = dcf.format(diemMonHoc);
System.out.println (formattedDate );

答案 1 :(得分:0)

问题是您在打印输出时使用了double类型 不是格式化的。 在此代码中,您可以舍入输出:

 public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Nhập vào điểm môn chuyen can :");
    double diemChuyenCan = scanner.nextFloat();
    System.out.println("Nhập vào điểm kiểm tra: ");
    double diemKiemTra = scanner.nextFloat();
    System.out.println("Nhập vào điểm học kỳ: ");
    double diemHocKy = scanner.nextFloat();

    DecimalFormat dcf = new DecimalFormat("#.#");
    double diemMonHoc = (diemChuyenCan + diemKiemTra + diemHocKy) /3;
    dcf.format(diemMonHoc);
    if(diemMonHoc>=8) {

        System.out.println("Điểm trung bình là: "+ dcf.format(diemMonHoc) + " Mônhọc giỏi");
    }else if(diemMonHoc >= 6.5 && diemMonHoc < 8){

        System.out.println(" Môn học  khá");
    }else if( diemMonHoc >= 5 && diemMonHoc < 6.5) {

        System.out.println(dcf.format(diemMonHoc) +" Môn học trung bình");
    }else {

        System.out.println(dcf.format(diemMonHoc) +" Môn học kém");
    }
}

但是在上面的代码中,它舍入了数字和这些输入的输出:3.2 3.5 4.9 是3.9,如果不想舍入,则应使用“#。##”格式,这样输出将为3.87。

祝你有美好的一天。