2009-10-17 38 views
7

Được biết rằng trong kích thước .NET của cả dài và đôi là 8 byte. Tuy nhiên, đôi có thể lưu trữ số lượng lớn hơn đáng kể so với dài. Làm thế nào nó có thể được, xem xét rằng đôi cũng cần lưu trữ dữ liệu trên các chữ số sau dấu thập phân? phiên bảnGiá trị lớn nhất so với kích thước dài và gấp đôi trong .NET

ngắn của câu hỏi:

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

+0

đôi có độ chính xác thấp hơn số thập phân. –

+0

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

+0

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

Trả lời

17

Câu trả lời ngắn đôi chỉ lưu trữ con số quan trọng nhất và không phải tất cả các chữ số có thể có trong số. ví dụ. nếu bạn có giá trị gấp đôi> giá trị tối đa, nó sẽ không lưu trữ bất kỳ thông tin nào cho các chữ số sau dấu thập phân hoặc bất kỳ hình nào ở bên trái của điểm deciaml.

Để biết tất cả chi tiết, hãy xem What every computer scientist should know about Floating-Point Arithmetic

+1

Giải thích bằng các thuật ngữ đủ đơn giản để mọi người hiểu :) – Konstantin

+0

Ban đầu tôi sử dụng văn bản này khoảng năm trước và thấy nó thực sự hữu ích. – LJM

0

đôi là số dấu chấm động. Whitch bassicaly meams rằng nó như số lượng được lưu trữ trong gấp đôi được lớn hơn nó beeing rouned, và phần ít meaniant là bị sa thải.

Ví dụ: gấp đôi khi bạn có con số như 100 tỷ. Có thể chính xác 100 000 000 000 hoặc có thể là 100 000 000 000,000 000 000 000 000 001

+0

Mặc dù điều này không sai, nó bỏ nguyên nhân chính tại sao đôi có phạm vi lớn hơn int hoặc dài, cụ thể là nó là một số dấu phẩy động được biểu diễn bởi một significand và một số mũ. –

1

Loại dựa trên số nguyên có số nguyên từ -2^(n-1) 2 ... 2^(n -1) -1 (đã ký), hoặc 0 ... 2^n-1 (chưa ký).

Biến số điểm cố định giống với các loại dựa trên số nguyên, chỉ với một yếu tố không đổi (ví dụ: 0,01: 0,01 * (0 ... 2^n-1)).

Biến số dấu phẩy động (nổi và kép) trong bất kỳ ngôn ngữ nào sử dụng một vài bit cho số mũ và phần còn lại cho số trước số mũ. Chúng ít chính xác hơn (x + 1 có thể bằng x, là x là một số rất lớn), nhưng có phạm vi lớn hơn nhiều.

+1

Btw, số "trước số mũ" được gọi là mantissa hoặc (tốt hơn) meanand, xem http://en.wikipedia.org/wiki/Significand. –

Các vấn đề liên quan