我试过这个方法重载代码,但我得到了错误
no suitable method found for add(double,double)
代码:
class Adder {
static float add(float a, float b) {
return a + b;
}
static int add(int a, int b) {
return a + b;
}
}
class TestOverloading1 {
public static void main(String[] args){
System.out.println(Adder.add(11.5, 11.5));
System.out.println(Adder.add(27, 21));
}
}
在编写时,参数中的 11.5f 效果很好。
我从 here 了解了 float 和 double 之间的区别和 here .
那么,Java为什么默认将参数取为double数据类型呢?这种偏差背后是 double 的更高精度吗?
我知道默认情况下它采用 double 。但是,我想知道这背后的原因是什么?
最佳答案
根据定义,没有任何后缀的浮点文字(例如 11.5
)是 double
类型(类似地,没有任何后缀的整数文字是 int 类型
)。
double
参数对于接受 float
参数的方法是 Not Acceptable (因为从 double
到 float
可能会导致数据丢失,因此编译器不会自动执行此类转换)。
另一方面,11.5f
是一个float
文字,因此您可以将此类文字传递给您的add(float a,float b)
方法。
关于java - 方法重载显示 'incompatible type error' 带 float 但不带 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46033859/