Biểu đồ so sánh:
Cơ sở để so sánh | Phao | Gấp đôi |
---|---|---|
Độ chính xác | Độ chính xác đơn. | Độ chính xác gấp đôi. |
Bit | 32 bit. | 64 bit. |
Byte | 4 byte. | 8 byte. |
Phạm vi gần đúng | 1, 4e-045 đến 3, 4e + 038 | 4, 9e-324 đến 1, 8e + 308 |
Đại diện bit | 1 bit đại diện cho bit dấu. 8 bit đại diện cho số mũ. 23 bit đại diện cho lớp phủ. | 1 bit đại diện cho bit dấu. 11 bit đại diện cho số mũ. 52 bit đại diện cho lớp phủ. |
Độ chính xác | Kém chính xác hơn. | Chính xác hơn. |
Định nghĩa của Float
Một kiểu dữ liệu nổi là một trong những kiểu dấu phẩy động. Phao kiểu dữ liệu có bộ lưu trữ 32 bit (bằng 4 byte) cho biến kiểu float. Kiểu dữ liệu float chỉ định độ chính xác duy nhất. Việc biểu diễn 32 bit trong float có thể được giải thích là 1 bit được biểu diễn dưới dạng bit dấu, 8 bit được biểu diễn dưới dạng số mũ và 23 bit được biểu diễn dưới dạng mantissa. Phạm vi tối đa của loại phao là 1, 4e-045 đến 3, 4e + 038. Khi so sánh với kiểu float dấu phẩy động kép thì kém chính xác hơn trong khi tính toán. Hãy để chúng tôi hiểu float bằng một ví dụ.
#include #include int main () {float num1 = sqrt (64, 23) cout << num1; } // đầu ra 8.00060
Như trong đoạn mã trên, bạn có thể quan sát thấy một biến float num1 được gán một giá trị bằng hàm sqrt (), trả về căn bậc hai của giá trị được truyền cho hàm này. Bạn có thể quan sát thấy rằng khi giá trị trong num1 được in, nó gần bằng giá trị chính xác, nhưng nó không chính xác. Bây giờ chúng ta hãy xem ví dụ dưới đây khi cùng một chương trình được thực thi bằng cách sử dụng double làm kiểu dữ liệu.
Định nghĩa của đôi
Double là loại kiểu dữ liệu dấu phẩy động thứ hai. Một kiểu dữ liệu kép có bộ lưu trữ 64 bit (bằng 8 byte) cho một biến kiểu kép. Nó chỉ định độ chính xác gấp đôi vì kích thước của nó chỉ gấp đôi phao. Biểu diễn 64 bit của kiểu double có thể được giải thích là 1 bit đại diện cho bit dấu, 11 bit đại diện cho số mũ và 52 bit còn lại đại diện cho mantissa. Trong số float và double loại dữ liệu được sử dụng phổ biến nhất là gấp đôi. Loại kép được sử dụng trong quá trình tính toán và khi cần độ chính xác hoàn hảo. Các hàm toán học sin (), cos () và sqrt () luôn trả về giá trị kép. Hãy cho chúng tôi hiểu độ chính xác của kiểu dữ liệu nhân đôi với một ví dụ.
#include #include int main () {double num1 = sqrt (64, 23) cout << num1; } // đầu ra 8.0143621
Bạn có thể quan sát rằng đầu ra thu được trong ví dụ, giải thích float khác với đầu ra thu được trong ví dụ, giải thích gấp đôi. Vì vậy, từ điều này, chúng ta có thể nói rằng kết quả thu được từ gấp đôi chính xác hơn so với float.
Sự khác biệt chính giữa Float và Double
- Phao kiểu dữ liệu chỉ định độ chính xác đơn có nghĩa là khi so sánh với gấp đôi thì độ chính xác thấp hơn trong khi đó, độ chính xác gấp đôi vì nó chỉ gấp đôi độ nổi của nó là không đáng kể so với float.
- Một biến của kiểu float có dung lượng lưu trữ là 32 bit trong khi đó, một biến kiểu kép có dung lượng lưu trữ là 64 bit, nó biên dịch gấp đôi dung lượng lưu trữ lớn hơn so với float.
- Giá trị trong float có thể nằm trong khoảng từ 1, 4e-045 đến 3, 4e + 038 trong khi đó, giá trị của kiểu double có thể dao động từ 4, 9e-324 đến 1, 8e + 308.
- Biểu diễn bit của giá trị float tương tự như 1 bit float được sử dụng cho bit sing, 8 bit cho số mũ và 23 bit để lưu trữ mantissa. Mặt khác, một giá trị kép tương tự như 1 bit của nó được sử dụng cho bit sing, 11 bit cho số mũ và 52 bit của nó để lưu trữ lớp phủ.
- Do đó, khi so sánh với float kép ít chính xác hơn, trong khi phép tính toán kép được sử dụng.
Phần kết luận:
Chà, nói chung bạn phải sử dụng gấp đôi vì nó cung cấp độ chính xác, đó là moto chính của chúng tôi hầu hết thời gian.