当我运行程序时,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");
}
}
答案 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。
祝你有美好的一天。