java - 方法重载显示 'incompatible type error' 带 float 但不带 double

标签 java type-conversion

我试过这个方法重载代码,但我得到了错误

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 (因为从 doublefloat 可能会导致数据丢失,因此编译器不会自动执行此类转换)。

另一方面,11.5f 是一个float 文字,因此您可以将此类文字传递给您的add(float a,float b) 方法。

关于java - 方法重载显示 'incompatible type error' 带 float 但不带 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46033859/

相关文章:

java - 使用 Spring、Scala 和 Jackson 将 JSON 反序列化为 Map[String, SomeJavaObject]

java - 如何正确地与doOnNext/doOnCompleted进行副作用同步?

javascript - var i = [0] 在 for 循环中,然后递增 i++ - 为什么它有效?

c++ - 从 'const char*' 到 'const uint8_t*' 的转换无效

java - 如何禁用 JList 选择更改事件并仅在双击时调用它?

java.sql.Date 格式错误

java - OAuth2 多个单用户多重登录

php - 将数组位转换为实际图像

python - 更改 DataFrame 列类型但对错误使用默认值的简单方法?

检查C中的输入类型