2013-03-11 2 views
1

Определено в правиле продвижения типа для java, что длинные данные могут быть введены в тип данных float. как это возможно??Тип литья в java

, например:

class casting{ 

    void show(float a){ 
    System.out.println("float"); 
    } 


public static void main(String args[]){ 
    casting obj = new casting(); 
    obj.show(10l); 
    } 

} 

но здесь выход flaot Как долго данные, которые 8 байт преобразуются в данные с плавающей точкой (4 байта)?

+0

В чем вопрос. Здесь нет "?" отметьте в своем сообщении. – Jayamohan

+0

мой вопрос - как это преобразование возможно. в полях типа даты (4 байта) длинные данные (8 байт) хранятся как .. ?? –

+0

Этот [ответ] (http://stackoverflow.com/a/1293836/1060037) должен сказать вам, почему. – Jayamohan

ответ

0

Я изменил вашу программу следующим образом. long - это 64-битный тип подписки, а максимальное значение - 9223372036854775807l. когда вы конвертируете его в float, он печатает как 9.223372E18. float - 32-битный тип данных с одной точностью. Упование это помогает

public class casting { 

    void show(float a) { 
     System.out.println("float is " + a); 
    } 

    public static void main(String args[]) { 
     casting obj = new casting(); 
     obj.show(9223372036854775807l); 
    } 

}