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");
}
}
解决方案
无需深入了解您的代码逻辑(不懂行话)
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 );
推荐阅读
- ms-access - 如何在不丢失setfocus的情况下将光标设置到文本框的末尾?
- c# - 在 C# 中使用接口实例化类
- python - 如何将对象实例移动到另一个类?
- java - 使用 Java Streams 和 Scanners 时出现意外行为
- azure - 诊断 Azure 事件网格中的故障?
- php - 如何在 cPanel 上运行 CRON 作业?
- javascript - NPM 全局安装失败
- ruby-on-rails - 覆盖 ActiveAdmin 中的操作
- arrays - 通过 Google API 更新 Google Drive 中的 XML 文件
- c++ - GLSL Shader 没有渲染任何东西,VAO 被填充,VBO 被顶点填充