Bài 20. Một số kiểu số thực

Hiện mục lục Hiện mục lục

1. Một số kiểu số thực chính

Các kiểu số thực trong C++ có thể lưu các số với phần thập phân dưới dạng dấu phẩy động (https://vi.wikipedia.org/wiki/Số_thực_dấu_phẩy_động). Một số kiểu số thực chính là:

Các kiểu số thực có một số đặc điểm đáng lưu tâm sau đây:

2. Giá trị trực tiếp của các kiểu số thực chính

Một giá trị số thực có thể được viết bằng hệ thập phân hoặc hệ thập lục phân.

Cấu trúc của giá trị số thực hệ thập phân gồm:

Giá trị sẽ được tính bằng phần định trị nhân với lũy thừa cơ số 10 của phần mũ.

Ví dụ, 508.36e6 có phần định trị là 508,36, phần mũ là 6, giá trị là 508,36.106 = 508 360 000.

Bạn có thể thực hiện lược bỏ một số phần trong cấu trúc trên bằng một trong các cách dưới đây để dễ viết và đọc hơn:

Phần nào được lược bỏ, phần đó sẽ được mặc định giá trị là 0.

Bạn cũng có thể chèn các dấu nháy đơn ' vào giữa các chữ số để dễ đọc hơn.

Như vậy ta cũng có thể viết giá trị số thực 508 360 000 theo các cách sau:

508'360'000.0
508'360'000.
.508'36e9
508'360e3
Lưu ý

Như đã đề cập ở bài trước, nhiều giá trị viết trong hệ thập phân sẽ không thể biểu diễn chính xác trong hệ nhị phân. Tuy nhiên trong nhiều hoàn cảnh sử dụng sự không chính xác này là chấp nhận được.

Cấu trúc của giá trị số thực hệ thập lục phân gồm:

Giá trị sẽ được tính bằng phần định trị nhân với lũy thừa cơ số 2 của phần mũ.

Bạn cũng có thể thực hiện lược bỏ một phần của giá trị trực tiếp tương tự như giá trị hệ thập phân, tuy nhiên bạn không thể loại bỏ phần mũ, và bạn cũng có thể chèn các dấu nháy đơn ' giữa các chữ số.

Như vậy giá trị 508 360 00010 = 1E4C F54016 có thể được viết bằng hệ thập lục phân theo các cách sau:

0x1E4C.F54p16
0x.1E4C'F54p32
0x1E4C'F54p4
0x1E4C'F540.p0

Kiểu mặc định của giá trị số thực là double. Bạn có thể viết hậu tố F để xác định kiểu float, hoặc L để xác định kiểu long double.

Và tương tự như các giá trị số nguyên, các chữ cái được sử dụng trong giá trị số thực không phân biệt chữ hoa và chữ thường.

3. Chuyển đổi giá trị giữa các kiểu số thực chính

Giá trị của một trong những kiểu số thực nói trên có thể được ngầm định chuyển đổi thành một kiểu bất kì trong các kiểu còn lại. Nếu giá trị ban đầu có thể được biểu diễn chính xác trong kiểu đích, giá trị mới sẽ không thay đổi, nếu không, giá trị mới sẽ là giá trị của kiểu đích gần nhất so với giá trị ban đầu.

Ghi chú

Cũng như khi chuyển đổi thu hẹp kiểu số nguyên, thao tác chuyển đổi giá trị từ một kiểu số thực lớn hơn sang một kiểu số thực nhỏ hơn là một thao tác chuyển đổi thu hẹp, trừ khi giá trị gốc là một hằng số nằm trong phạm vi của kiểu đích, và bạn nên thực hiện tường minh sử dụng static_cast.

4. Chuyển đổi giá trị giữa kiểu số nguyên và kiểu số thực

Một giá trị của kiểu số nguyên có thể được chuyển đổi thành kiểu số thực. Nếu giá trị không thể được biểu diễn chính xác trong kiểu số thực đích (do quá lớn) thì nó sẽ được xấp xỉ bằng cách chọn giá trị gần nhất của kiểu đích.

Một giá trị của kiểu số thực có thể được chuyển đối thành kiểu số nguyên. Giá trị mới là phần nguyên của số thực và phải nằm trong phạm vi của kiểu số nguyên đích, nếu không sẽ là không hợp lệ và chương trình sẽ có hành vi không xác định. Đây là một thao tác chuyển đổi thu hẹp.

Mục lục Đóng mục lục