Javadaki Long Tipi
-
double türünden float türüne tür dönüştürme operatörü ile dönüştürme yapıldığında bilgi kaybı olabilir. Bu durumda IEEE 754 formatının yuvarlama kuralları uygulanarak float türünde gösterilebilecek en yakın sayı elde edilir. Örneğin:
double a; float b; a = 100.456789; b = (float)a; System.out.printf("a=%f\n", a); // a = 100,456789 System.out.printf("b=%f\n", b); // b = 100,456787
Gerçek sayı türünden tamsayı türüne tür dönüştürme operatörü ile yapılan dönüştürme işlemi iki aşamada gerçekleşir: Birinci aşamada hedef tür long türü dışında bir tamsayı türünde ise (byte, short, char veya int) önce int türüne dönüştürülür. Hedef tür long ise long türüne dönüştürülür. Bu dönüştürme sırasında sayının noktadan sonraki kısmı atılır. Bu durumda elde edilen değer dönüştürülecek türün (long veye int) sınırları içerisinde kalıyorsa bir sorun oluşmaz. Eğer elde edilen değer dönüştürülecek türün (long veya int) sınırları içerisinde kalmıyorsa ve sayı negatifse dönüştürülecek türün (long veya int) tutabildiği en küçük değer alınır, sayı pozitifse dönüştürülecek türün (long veya int) tutabildiği en büyük değer alınır. Hedef tür byte, short ya da char türlerinden biriyse elde edilen değer birinci aşamada elde değerin yüksek anlamlı byte değerleri atılmış biçimidir.Ornek :
public static void main(String[] args) { double a; int b; a = 100.45678; b = (int) a; System.out.printf("b=%d\n", b);
}Ornek 2 : byte cevirme :
public static void main(String[] args) { //12A05F200 double a = 5000000000.456; byte b = (byte)a; System.out.printf("a=%f%n", a); System.out.printf("b=0x%X%n", b); System.out.printf("b=0x%d%n", b); }
Burada dönüştürme byte türüne yapıldığından sayının noktadan sonraki kısmı atıldığında değer int türüne dönüştürülür. Sayının noktadan sonraki kısmı atıldığında elde edilen değer int türü sınırları dışındadır. Çok büyük bir değer olarak (pozitif olarak) sınırlar dışında kaldığından bu sayı int türü içerisinde tutulan en büyük sayıya (2147483647) dönüştürülür. Daha sonra sayının yüksek anlamlı 3(üç) byte’ı atılarak 1(bir) byte lık sayı elde edilir. Dikkat edilirse bu sayı -1 sayısıdır.