2011-10-05 18 views
6

Với số tùy ý được thể hiện ở định dạng đơn độ chính xác IEEE-754 (thường được gọi là float ở một số ngôn ngữ/nền tảng), tôi có thể chắc chắn rằng số đó có thể được biểu diễn chính xác ở định dạng chính xác kép không?Có phải tất cả các số có độ chính xác đơn đều thể hiện ở định dạng chính xác kép không?

Nếu có, thuộc tính đó có hợp lệ khi xem xét chính xác một nửa đến độ chính xác đơn và chính xác gấp đôi đến độ chính xác gấp bốn lần không?

+0

Hồi ức của tôi là đơn và đôi chỉ khác nhau về số bit được gán cho mantissa/exponent. Tuy nhiên, tôi không có một tham chiếu, vì vậy đây không phải là một câu trả lời. Nhưng +1, đó là một câu hỏi hay. – kdgregory

Trả lời

5

Có, đôi có thể đại diện cho bất kỳ số nào mà phao có thể. Tương tự như vậy cho bốn độ chính xác, v.v.

Một số dấu phẩy động được biểu diễn dưới dạng 1.01b x 2^-1 (0.625, trong trường hợp này). Các thành phần quan trọng của số này là significand, mà về cơ bản là một số nhị phân với một điểm radix thường ngay sau chữ số đầu tiên, và số mũ.

Sự khác biệt lớn duy nhất giữa các định dạng dấu phẩy động nhị phân là số bit cho mỗi thành phần. Số bit càng nhiều, số bit càng có sẵn cho mỗi phần. Vì vậy, một "phao" 32-bit có thể có 1.01000000000000000000000 cho significand, và một (64-bit) "đôi" sẽ có khoảng 50 chữ số sau dấu chấm. Điều này có nghĩa là bất kỳ số nào được biểu diễn chính xác trong một phao cũng có thể biểu diễn chính xác ở mức gấp đôi, vì bạn có cả độ chính xác gia tăng (đọc: chữ số có nghĩa hơn) và phạm vi tăng lên. Nó tương tự như cách một biến số nguyên 64 bit có thể chứa bất kỳ số nguyên 32 bit nào; các bit phụ chỉ là khá nhiều đi không sử dụng.

Tất nhiên, bất kỳ bit nào bị cắt do lỗi làm tròn sẽ không quay trở lại số khi bạn chuyển đổi thành số hai - nghĩa là 0,3 bạn có trong phao, là kết quả không chính xác như 0,2999999875 hoặc một cái gì đó (tôi không cảm thấy như tính toán), sẽ không nhận được bất kỳ gần gũi hơn với 0,3 khi bạn chuyển đổi nó thành một đôi - nó sẽ vẫn là 0,2999999875. Nếu bạn muốn một xấp xỉ gần hơn, bạn sẽ cần phải làm lại các phép tính với gấp đôi từ đầu.

3

Có. Trong thực tế, bạn có thể đưa ra một tuyên bố mạnh mẽ hơn: mỗi sản phẩm của hai số có độ chính xác duy nhất có thể biểu diễn chính xác ở độ chính xác gấp đôi (ditto cho một nửa và đơn hoặc đôi và quad).

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