注意区别,从原始角度出发
1. float单精度, double是双精度(double更细)
2. 那么必然double类型会更占空间(8字节),(float,4个字节)
3.就会导致CPU处理两种类型的速度出现差异(float,小,就更快),(double大,慢一点)
那么可以得出,当我们对精度要求非常高,不能因为丢失精度而导致一点点误差,就必须用double类型来定义数据。
练习:
然后通过条件判断BMI的范围,打印出是超重还是正常
* BMI<18.5 过轻
* 18.5<=BMI<24 正常
* 24<=BMI<27 过重
* 27<=BMI<30 轻度肥胖
* 30<=BMI<35 中度肥胖
* 35<=BMI 重度肥胖
可以自己测试一下,算出来的BMI,double会比float小数点后尾数更多。(精度更高)
package org.example;
import java.util.Scanner;
/**
* Description
* Create by ${USER}
* Date ${DATE} ${TIME}
*/
/**
* 使用Scanner收集你的身高体重,并计算出你的BMI值是多少
*
* BMI的计算公式是 体重(kg) / (身高*身高)
*
* 比如xx的体重是72kg, 身高是1.69m,那么这位同学的BMI就是
* 72 / (1.69*1.69) = ?
*
* 然后通过条件判断BMI的范围,打印出是超重还是正常
* BMI<18.5 过轻
* 18.5<=BMI<24 正常
* 24<=BMI<27 过重
* 27<=BMI<30 轻度肥胖
* 30<=BMI<35 中度肥胖、
* 35<=BMI 重度肥胖
*/
public class Main {
public static void main(String[] args) {
// double BMI=0.0;
// Scanner scanner = new Scanner(System.in);
// System.out.println("请输入身高(m):");
// double tall = scanner.nextDouble();
// System.out.println("请输入体重(kg):");
// double weight = scanner.nextDouble();
float BMI=0f;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入身高(m):");
float tall = scanner.nextFloat();
System.out.println("请输入体重(kg):");
float weight = scanner.nextFloat();
BMI=weight/(tall*tall);
System.out.println("当前你的BMI是"+BMI);
if(BMI<18.5){
System.out.println("体重过轻");
}
else if (BMI>18.5 & BMI<24){
System.out.println("正常范围");
}
else if(BMI>24 & BMI<27){
System.out.println("体重过重");
}
else if(BMI>27 & BMI<30){
System.out.println("体重轻度肥胖");
}
else if(BMI>30 & BMI<35){
System.out.println("体重中度肥胖");
}
else if(BMI>35){
System.out.println("重度肥胖");
}
}
}