Các dạng dấu phẩy động (tiếp tục)
Một float có thể lưu giữ các số nhỏ như 3.4×10-45 và lớn như 3.4×1038 Cái đó nhỏ đủ
để đo lường các hạt và lớn đủ để đo lường vũ trụ nhiều lần. Một float có 6 đến 7 con
số độ chính xác, phụ thuộc vào số, có nghĩa nó có thể trình bày số 10000 và số
0.0001, nhưng không có giải quyết để phân biệt giữa 10000 và 10000.0001.
Một double có thể lưu giữ các số nhỏ như 5×10-324 và lớn như 1.7×10308 với chính xác
lên tới 15 đến 16 con số.
Một decimal có thể lưu giữ các con số nhỏ như 1.0×10-28 và lớn như 7.9×1028 với chính
xác lên tới 28 đến 29 con số.
Tôi sẽ không viết ra tất cả số đó trong notation thông thường, nhưng nó là đáng dành
chút thời gian để tưởng tượng chúng có thể trông là gì.
Tất cả 3 trình bày dấu phẩy động là tuyệt vời trong kích cỡ, nhưng xem các số mũ, bạn
sẽ có cảm giác cho chúng so sánh với nhau như thế nào. Dạng float sử dụng ít bytes nhất
và phạm vi và chính xác của nó là tốt đủ để cho hầu hết mọi thứ. Dạng double có thể lưu
giữ các số lớn lớn nhất và các số nhỏ nhỏ nhất với nhiều chính xác hơn một float. Phạm vi
của dạng decimal là nhỏ nhất trong 3 dạng nhưng là chính xác nhất và là cực tốt
cho tính toán nơi độ chính xác thành vấn đề (như tính toán tài chính và tiền tệ).
Bảng dưới tóm tắt các dạng này so sánh với nhau như thế nào.
Tạo các biến thuộc những dạng này là tương tự như các dạng khác, nhưng nó trở nên thú vị
hơn khi bạn tạo float, double, và decimal literals:
double number1 = 3.5623;
float number2 = 3.5623f;
decimal number3 = 3.5623m;
Nếu một literal số chứa một điểm thập phân, nó trở thành một double literal thay vì một literal
số nguyên. Gắn f hay F vào cuối (có hay không có điểm thập phân) làm nó thành một float literal.
Gắn m hay M vào cuối làm nó thành decimal literal (“m” cho “monetary” hay “money”. Các tính toán tài
chính thường cần chính xác cao).
Tất cả 3 dạng có thể trình bày một phạm vi lớn hơn bất cứ dạng số nguyên nào, nên nếu bạn sử dụng
một literal số nguyên, trình dịch sẽ tự động chuyển đổi nó.