自动转换为参数加倍

时间:2016-09-16 18:33:33

标签: java casting floating-point double signature

为什么Java转换点数会自动加倍?当我施展它时,它有效。但在我看来,这并不是一种美好的方式。

我的方法可以改为签名加倍。但是当我导入一些东西时,我找不到任何解决方案。

public class Demo {

    public static void main(String[] args) {
        run(0.1);
        run(1*0.1);
        run(1);
        importedClass.setPosition(0.1, 3.5); 
        //setPosition(float, float) not applicable for the arguments (double, double)
        run((float) 0.1);
        run((float) 1*0.1);
        run(1);
        importedClass.setPosition((float) 0.1, (float) 3.5); 
    }

    public static void run(float x) {
        //do something
    }

}

引发未解决的编译问题:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method run(float) in the type Demo is not applicable for the arguments (double)
The method run(float) in the type Demo is not applicable for the arguments (double)

at test.Demo.main(Demo.java:6)

2 个答案:

答案 0 :(得分:4)

enter image description here

中所定义
  

浮点文字的类型为float,如果后缀为ASCII字母F或f;否则其类型为double,并且可以选择以ASCII字母D或d

为后缀

因此,您可以通过使用后缀来清楚地告诉编译器您实际上正在使用类型float的文字:

run(0.1f);

答案 1 :(得分:3)

这是因为当后缀为“f”时或者' d'没有为十进制数指定,java会自动将其默认为double。

因此, 的运行(0.1);

变为: 的运行(0.1D);