Skip to main content

Typecasting | How is Long to Float Conversion possible?

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.

Comments

  1. Hey buddy please put some more point regarding change in behavior. Below sentence making me more confuse. Please clarify my query

    float b = 123456789L;
    System.out.println(b); // it is going to be out of range so converted into exponent form 1.23456792E8

    Thanks in advanced.

    ReplyDelete
    Replies
    1. Hi devendra, I have done with changes

      Delete
    2. Now its much more understandable.
      Thanks for prompt reply. :) :)

      Delete
  2. The King Casino Online ᐈ Get 50% up to €/$100 + 50 Free Spins
    Get 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,

    ReplyDelete

Post a Comment

suggestions

Popular posts from this blog

Why "F" and "L" suffix | (10.0F, 10L)

Let us take it this way, We will create their needs. So we will get why they are needed. Try to guess, which functions will be executed in the following program: public class MyClass {     public static void main(String args[]) {         MyClass obj = new MyClass();         obj.fun1(10);     }     void fun1(byte val){         System.out.println(val);     }     void fun1(int val){         System.out.println(val);     }     void fun1(float val){         System.out.println(val);     }     void fun1(long val){         System.out.println(val);     }     } It seems like every method is capable to run this program because 10 is still literal because It has no data type. Before Java, In previous technologies, this scenario gave an ambiguity...

Promises and Async-await in depth : Asynchronous Programming in Javascript

Promises and Asynchronous Programming One of the most powerful aspects of JavaScript is how easily it handles asynchronous programming. As a language created for the Web, JavaScript needed to be able to respond to asynchronous user interactions such as clicks and key presses from the beginning. Node.js further popularized asynchronous programming in JavaScript by using callbacks as an alternative to events. As more and more programs started using asynchronous programming, events and callbacks were no longer powerful enough to support everything developers wanted to do.  Promises  are the solution to this problem. Promises are another option for asynchronous programming, and they work like futures and deferreds do in other languages. A promise specifies some code to be executed later (as with events and callbacks) and also explicitly indicates whether the code succeeded or failed at its job. You can chain promises together based on success or failure in ways that make your code...

ChatGPT aur Google me kya difference hai?

  ChatGPT aur Google dono alag-alag hain. ChatGPT ek language model hai jo ki OpenAI dwara train kiya gaya hai. Iski madad se hum natural language text ko generate, understand, aur respond kar sakte hain. Google, on the other hand, ek search engine hai jo ki internet par available information ko search karne ki capability rakhta hai. ChatGPT language model ke through hum natural language text ko generate kar sakte hain, jese ki poetry, stories, articles and so on. Iski madad se hum human-like text ko generate kar sakte hain. Google, on the other hand, internet par available information ko search karta hai. Iske through hum kisi bhi topic ke bare me jankari le sakte hain. Dono alag hain, lekin kuch similarities bhi hain. Dono natural language text ke sath work karte hain. ChatGPT natural language text generate karne ke liye use kiya jata hai, aur Google natural language text ko search karne ke liye use kiya jata hai. ChatGPT ke through hum natural language text ko generate kar sakte...