tamamlayıcı tipi T bir kayan nokta sayısının bir daralma dönüşümü iki aşamada: İlk adımda
, kayan nokta sayısı uzun ya dönüştürülür T uzunsa veya bir int ise, T bayt, kısa, char veya int ise
Kayan nokta sayısı NaN (§4.2.3) ise, sonuç conver'in ilk adımı kayan nokta sayısı kayan nokta değeri IEEE 754 yuvarlak işaretine doğru kullanılarak sıfır doğru yuvarlanması, bir tamsayı değeri V yuvarlanır, bir sonsuz değilse sion, 0
Aksi halde, int veya uzun sıfır modu (§4.2.3). Daha sonra iki durum vardır: T uzunluğunda ve bu tamsayı değeri, uzun olarak temsil edilebilir, bu tam sayı ise
, daha sonra birinci aşamanın sonucu, Aksi takdirde uzun değer V
olan
değeri bir int olarak temsil edilebilir, daha sonra birinci aşamanın sonucu
Aksi halde, aşağıdaki iki durum arasında bir doğru olmalıdır sayı değeri V. :
değeri çok küçük olması gerekir (a büyük büyüklükte negatif değer veya negatif sonsuzluk) ve ilk adımın sonucu int veya long türünün en küçük gösterilebilir değeridir.
değeri çok büyük olması gerekir ve ilk aşamanın sonucu (büyük bir büyüklük ya da pozitif sonsuz bir pozitif değer) int türü ya da uzun büyük Temsil değerdir. İkinci adımda
:
Tıç veya uzunsa, dönüştürme sonucu birinci aşamada bir sonucudur.
T bayt, kömür ya da kısa ise, dönüştürme sonucu daralan bir dönüşüm sonuç T tipi için (§5.1.3) ilk aşaması sonucu.
Bir "int" ve sonra bir "byte" için döküm olduğunu varsayalım Not: Integer.MAX_VALUE, bir "int" için Infinity değerine en yakın değerdir. –
Thx Peter, ancak Integer.MAX_VALUE değerini 'uzun' a çevirmek bize sadece '2147483647L' verir mi? –
@PeterLawrey '(1.0/0)' ın 'double' olarak değerlendirilebilmesi mümkün olmazdı ve daha sonra da baytlık klavyenin 8 bitini dikkate alması mümkün değil miydi? IEEE 754, "double" ve "float" standartlarını tanımlarken, "int" için işaret bitinin 0 olduğunu garip buluyorum çünkü dokümanlar int için sonsuzluk özelliklerini tanımlamıyor. –