2

我们在java中的包装类Float中使用以下2个构造函数的方式有什么区别 Float(float value)Float (double value)

同样在 2 个构造函数 Float(double value)Double(double value)

4

4 回答 4

3

Float(float)构造函数创建一个具有给定值的Float包装对象。构造Float(double)函数使用强制转换为的给定参数创建和对象,从而float失去了一些double值的精度。从来源

public Float(float value) {
        this.value = value;
}

public Float(double value) {
        this.value = (float)value;
}

Double(double)另一方面,构造函数创建具有给定值的Double包装对象。double

于 2013-08-19T12:58:11.023 回答
2

看看源代码

     public More ...Float(float value) {
480        this.value = value;
481    }


Constructs a newly allocated Float object that represents the argument converted to type float.
Parameters:
value the value to be represented by the Float.
488
489    public More ...Float(double value) {
490        this.value = (float)value;
491    }

只是铸造this.value = (float)value;

于 2013-08-19T13:00:03.687 回答
1

Float(float value)和Float(double value)之间没有具体的区别,后者只是将double参数转换为float表示。

查看此方法的源代码:

public Float(float value) {
    this.value = value;
}

public Float(double value) {
    this.value = (float) value;
}
于 2013-08-19T13:00:20.777 回答
0

当你有一个精度的浮点值并且需要一个对象来保存另一个精度时,拥有跨类型构造函数只是一种方便。从double到移动会float失去精度,从float到移动会double获得精度(但存储的实际值只会用零填充)。这两个构造函数相当于首先手动转换为另一个精度。

于 2013-08-19T12:59:22.573 回答