2011-09-22 15 views

cevap

43

(1.7 x 10 ± x 10 -324 5.0 ±) bir double aralığı bir int (2,147,483,647 için -2147483648) aralığında çok daha büyük olduğu için. Dönüş tipi int ise, birçok olası giriş başarısız olabilir. Örneğin Math.Ceiling bir OverflowException bir checked bağlamında atmak zorunda kalabilir veya hatta denetlenmeyen bir bağlamda yanlış bir sonuç verebilir. Bu istenmeyen davranış.

Ayrıca, NaN ve PositiveInfinity gibi bazı özel değerler bu yöntemle döndürülebilir. Bu sadece dönüş tipi double ise mümkündür. O örnekteki gibi açık döküm, eğer

elbette değer * değildir
int result = (int)Math.Ceiling(a); 
+0

Ve eğer: Eğer sonuç int sığacak inanıyorsanız

, bir açık döküm ekleyebilir * fit, çalışma zamanı uygun (ve başa çıkmak için istisna olsun) atar. –

+0

Bu gerçekten aptalca: Çiftler kesinlikle ~ 7-8 anlamlı rakamları saklayabilir, böylece '2147483648''den daha yüksek herhangi bir şeyi yuvarlayamazsınız. –

+1

@ ChrisBurt-Brown: A 'çifte ', yarı yarıya kadar her bir yarıyı 2^52 değerine kadar tutabilir, bu da'^32 'aralığından çok daha büyüktür (ancak, 2^63 aralığından daha küçüktür. Int64'). – supercat

İlgili konular