在下面的代码中,我从double
、float
和String
构造了一些Double
变量。但是,根据文档,Double
仅具有接受 double
和 String
的构造函数 - 而不是 float
。那么这段代码如何编译呢?
Double d1 = new Double(2.5);
Double d2 = new Double(2.5f); //Why can I pass a float here?
Double d3 = new Double("2.5");
最佳答案
因为 float
通常可以转换为 double
而不会丢失精度,所以 float
可以自动加宽 到 double
。参见 Widening Primitive Conversion有关 Java 将自动扩展哪些类型的信息。
有关float
/double
转换的链接文档中指出了一个异常:
A widening primitive conversion from
float
todouble
that is notstrictfp
may lose information about the overall magnitude of the converted value.
关于java - 为什么我可以将 float 传递给 Double 的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51053086/