2009-10-17 15 views
7

NET'te hem uzun hem de çift boyutunun 8 bayt olduğu biliniyor. Ancak, çift uzunluğundan çok daha büyük sayıları saklayabilir. İkilinin de ondalık noktadan sonraki basamaklarda veri depolaması gerektiği düşünülürse nasıl olabilir? SorununNET'teki uzun ve çift boyutuna karşılık maksimum değer ve çift boyutu

Kısa versiyon:

Math.pow (2, 64) == long.MaxValue Math.pow (2, 64) < double.MaxValue

+0

çift ondalıktan daha az kesinlik gösterir. –

+0

http://en.wikipedia.org/wiki/Double_precision –

+0

http://en.wikipedia.org/wiki/Floating_point#Range_of_floating-point_numbers –

cevap

17

Kısa cevap çift sadece depolayan En anlamlı figür ve sayıdaki tüm rakamlar değil. Örneğin. Eğer çifte uzunluğa sahip bir maksimum değeriniz varsa, ondalık noktadan sonraki herhangi bir rakam veya ondalık noktasının hemen solundaki herhangi bir sayı için herhangi bir bilgiyi saklamayacaktır. Tüm ayrıntılar için

What every computer scientist should know about Floating-Point Arithmetic

+1

Herkesin anlaması için yeterince basit bir şekilde açıkladı :) – Konstantin

+0

İlk olarak bu metni kullandım Yaklaşık bir yıl önce ve gerçekten yararlı buldum. – LJM

0

çift kayan nokta sayısı görüyoruz. Whitch bassicaly, çift olarak depolanan sayı olarak onu büyüterek daha da büyüyor, en az anlamlı kısım ise işten atılıyor. Örneğin, 100 milyar gibi bir numaraya sahip olduğunuzda iki katına çıkabilir. Tam olarak 100 000 000 000 olabilir veya 100 000 000 000,000 000 000 000 000 001

+0

Bu yanlış olmamakla birlikte, çiftin int veya long'dan daha geniş bir aralığa sahip olmasının ana sebebi, yani bir anlam ve bir üs ile temsil edilen bir kayan nokta sayısı olmasıdır. –

1

Tamsayı tabanlı türler -2^(n-1) 2 ... 2^(n) arasında tam sayı aralıklarına sahiptir. -1) -1 (imzalı), veya 0 ... 2^n-1 (imzasız).

Sabit nokta değişkenleri tamsayı tabanlı tiplerle aynıdır, sadece sabit bir faktörle (ör. 0.01: 0.01 * (0 ... 2^n-1)).

Herhangi bir dilde kayan nokta değişkenleri (kayan ve çift), üs için birkaç bit ve üslenmeden önceki numara için kalanları kullanır. Bunlar daha az doğrudur (x + 1 x eşit olabilir, x çok büyük bir sayıdır), ancak çok daha geniş bir aralığa sahiptir.

+1

Btw, "üsden önceki sayı" mantissa veya (daha iyi) anlamlı olarak adlandırılır, bkz. Http://en.wikipedia.org/wiki/Significand. –