浮点类构造函数

时间:2013-08-19 12:55:27

标签: java constructor

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

两个构造函数之间类似  Float(double value)和  Double(double value)

4 个答案:

答案 0 :(得分:3)

Float(float)构造函数使用给定值创建Float包装器对象。 Float(double)构造函数创建并使用给定的参数转换为float,从而失去double值的一些精度。来自the source

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

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

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

答案 1 :(得分:2)

Have a look at source code

     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;

答案 2 :(得分:1)

Float(浮点值)和Float(double值)之间没有特别的区别,后者只是将double参数转换为float表示。

请参阅此方法的源代码:

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

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

答案 3 :(得分:0)

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