Hi,
One can't assign a double to a float primitive without a cast...as we know.
So...can anyone explain the reasoning that permits a Float Wrapper to be created by passing a double to the Float constructor?
package Chapter6;
public class wrapperTest {
public static void main(
String args[]) {
float floatMax = Float.MAX_VALUE;
double doubleMax = Double.MAX_VALUE;
System.out.println("floatMax=" + floatMax);
System.out.println("doubleMax=" + doubleMax);
//Double from double
Double wrapperDouble = new Double(doubleMax);
double doubleOut = wrapperDouble.doubleValue();
System.out.println("doubleOut (From wrapperDouble holding doubleMax)=" + doubleOut);
//Float from float
Float wrapperFloat = new Float(floatMax);
float floatOut = wrapperFloat.floatValue();
System.out.println("floatOut (From wrapperFloat holding floatMax)="+ floatOut);
//Create a Float Wrapper using Float(double x) constructor (silly)
Float wrapperFloat2 = new Float(doubleMax);
float floatOut2 = wrapperFloat2.floatValue();
System.out.println("floatOut2 as float (From wrapperFloat2 holding doubleMax)=" + floatOut2);
double doubleOut2 = wrapperFloat2.doubleValue();
System.out.println("doubleOut2 as double (From wrapperFloat2 holding doubleMax)=" + doubleOut2);
}
}
Output...
floatMax=3.4028235E38
doubleMax=1.7976931348623157E308
doubleOut (From wrapperDouble holding doubleMax)=1.7976931348623157E308
floatOut (From wrapperFloat holding floatMax)=3.4028235E38
floatOut2 as float (From wrapperFloat2 holding doubleMax)=Infinity
doubleOut2 as double (From wrapperFloat2 holding doubleMax)=Infinity
Cheers,
Si.