Java double
s olan IEEE-754 , bu nedenle bunlar, 52-bit fraksiyonuna sahip, biçim; ikisinin herhangi iki bitişik gücü arasında (biri dahil ve bir sonrakini hariç), bu nedenle 2'den double
52'ye kadar farklı s (yani bunların 4503599627370496'sı) olacaktır. Örneğin, bu, double
0,5 dahil edilen ve 1,0 hariç tutulanlar arasındaki farklı URL'lerin sayısıdır ve tam olarak çoğu, 1,0 dahil edilen ve 2,0 hariç tutulan arasında yer alır vb.
doubles
0.0 ile 1.0 arasında saymak, ikinin üsleri arasında bunu yapmaktan daha zordur, çünkü bu aralıkta ikinin birçok gücü vardır ve ayrıca, normal olmayan sayıların dikenli konularına girilir. Üslerin 11 bitinden 10'u söz konusu aralığı kapsıyor, bu nedenle normalleştirilmiş sayılar (ve sanırım birkaç tür NaN
) dahil olmak üzere, ikinin double
kuvvetleri arasındaki s'nin 1024 katına sahip olacaksınız - en fazla 2**62
toplamda . Normalize edilmemiş ve c hariç, sayımın 1023 katı olacağına inanıyorum 2**52
.
"100 ila 100.1" gibi rastgele bir aralık için daha da zordur, çünkü üst sınır tam olarak a olarak gösterilemez double
(ikinin herhangi bir kuvvetinin tam katı değildir). Kullanışlı bir yaklaşım olarak, ikinin üsleri arasındaki ilerleme doğrusal olduğundan, söz konusu aralığın, 0.1 / 64
ikinin çevreleyen kuvvetleri (64 ve 128) arasındaki aralığın th olduğunu söyleyebilirsiniz , bu nedenle
(0.1 / 64) * 2**52
farklı double
s - 7036874417766.4004
bir veya iki vermek veya almak ;-)