有以下两个不同参数类型的函数
static double f(double x, float y){
return x+y;
}
static double f(float x, float y){
return x*y;
}
当调用时
一般来说,CPU处理单精度浮点数float的速度比处理双精度浮点数double快
System.out.println(f(10,10)); //100.0
System.out.println(f(10f,10)); //100.0
System.out.println(f(10.0,10)); //20.0
System.out.println(f(10.0,10f)); //20.0
因为如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转

//浮点数不能完全精确的表示出来,一般会损失精度
System.out.println(3*0.1); //0.30000000000000004
System.out.println(3*0.1 == 0.3); //false;

本文探讨了在处理浮点数运算时,由于CPU处理单精度浮点数的速度优势及浮点数无法完全精确表示的特性,导致的精度损失问题。通过示例展示了不同参数类型调用函数的影响,并说明了如何正确使用float类型以及浮点数运算中可能出现的精度误差。
214

被折叠的 条评论
为什么被折叠?



