We will take a brief description of Typecasting and will try to do focus on Log to Float Conversion.
Typecasting: Assigning a value of one data type to another.
When we assign a value of smaller data type to a bigger one. it is called Widening. Java did this conversion automatically as they are compatible. As shown in the following figure:
One another kind of conversion, when automatic conversion not possible i.e. when they are not compatible is Shortening. It will be just opposite of above and diagram will be reversed.
How is Long to Float Conversion possible?
If we look carefully at the diagram, there is one conversion which looks questionable is Long(8 bytes) to Float(4 bytes) conversion. It looks like data lossy conversion.
Actually, Type conversion does two things:
Either change in range or change in behavior or both.
Change in Range:
short a = 3456 // this value can be varied within the range of -32768 to 32767
int b = a // now this value can be varied within the range of -2147483648 to 2147483647
Change in Behaviour:
int a = 90 // it can be increased or decreased by any whole number like 7 or 89 etc.
float b = a // now it can be increased or decreased any fractional number like .1 or .57 etc
OR
float b = 9999999;
System.out.println(b); // 9999999.0
float b = 99999100;
System.out.println(b); // 9.9999104E7, java float mantissa take only 7 digit so it is truncated by exponent form
So Long to Float conversion is of the second type.
public class HelloWorld{
public static void main(String []args){
long a =9223372036854775807L;
float b = a;
System.out.println(b); // 9.223372E18
}
}
Point is that we became confused when we looked at the conversion of Long(8 byte) to float(4 byte) that why data is not loosing, we were taking this on changing in range conversion But actually It is the matter of changing in behavior.
Typecasting: Assigning a value of one data type to another.
When we assign a value of smaller data type to a bigger one. it is called Widening. Java did this conversion automatically as they are compatible. As shown in the following figure:
How is Long to Float Conversion possible?
If we look carefully at the diagram, there is one conversion which looks questionable is Long(8 bytes) to Float(4 bytes) conversion. It looks like data lossy conversion.
Actually, Type conversion does two things:
Either change in range or change in behavior or both.
Change in Range:
short a = 3456 // this value can be varied within the range of -32768 to 32767
int b = a // now this value can be varied within the range of -2147483648 to 2147483647
Change in Behaviour:
int a = 90 // it can be increased or decreased by any whole number like 7 or 89 etc.
float b = a // now it can be increased or decreased any fractional number like .1 or .57 etc
OR
float b = 9999999;
System.out.println(b); // 9999999.0
float b = 99999100;
System.out.println(b); // 9.9999104E7, java float mantissa take only 7 digit so it is truncated by exponent form
So Long to Float conversion is of the second type.
public class HelloWorld{
public static void main(String []args){
long a =9223372036854775807L;
float b = a;
System.out.println(b); // 9.223372E18
}
}
Point is that we became confused when we looked at the conversion of Long(8 byte) to float(4 byte) that why data is not loosing, we were taking this on changing in range conversion But actually It is the matter of changing in behavior.
Hey buddy please put some more point regarding change in behavior. Below sentence making me more confuse. Please clarify my query
ReplyDeletefloat b = 123456789L;
System.out.println(b); // it is going to be out of range so converted into exponent form 1.23456792E8
Thanks in advanced.
Hi devendra, I have done with changes
DeleteNow its much more understandable.
DeleteThanks for prompt reply. :) :)
The King Casino Online ᐈ Get 50% up to €/$100 + 50 Free Spins
ReplyDeleteGet 50% up to €/$100 หารายได้เสริม + 50 Free Spins · Visit the official https://jancasino.com/review/merit-casino/ site · Log in to https://tricktactoe.com/ your Casino Account · If you do not agree to ventureberg.com/ the terms of the terms of the filmfileeurope.com agreement,