首页 > 解决方案 > 程序平均运行不符合我的预期

问题描述

当我运行程序时,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");
        }
    }

标签: java

解决方案


无需深入了解您的代码逻辑(不懂行话)

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 );

推荐阅读