Các ngôn ngữ lập trình như Java Script, My SQL hay C++ là những ngôn ngữ lập trình phổ biến và quan trọng trong lĩnh vực công nghệ thông tin. Đặc biệt, C++ nổi tiếng với việc xử lý số thập phân và chuyển đổi chúng thành chuỗi ký tự dạng "floating" mà máy tính có thể hiểu. Trên đây là một bài viết sẽ giúp bạn hiểu rõ hơn về số thập phân trong C++ và cách lấy 2 chữ số sau dấu phẩy trong C++.
Ngôn ngữ C++ là gì?
C++ là một ngôn ngữ "đa hướng" và có tính năng hướng đối tượng quan trọng. Lập trình hướng C++ và hướng đối tượng C++ là những nền tảng cơ bản được đào tạo. Ngôn ngữ này phổ biến trên toàn cầu và được sử dụng bởi nhiều chương trình và doanh nghiệp công nghệ nổi tiếng.
Định dạng dấu phẩy trong C++
Định dạng dấu phẩy được sử dụng để lưu trữ số thập phân trong C++. Đó là những số có (hoặc có thể có) một phần thập phân sau dấu thập phân. Khi chúng ta nghĩ đến các thuật ngữ như "ba phẩy hai" hoặc "không phẩy tám", chúng ta đang nghĩ về các số được máy tính coi là "floating". Việc sử dụng dấu phẩy cho phép di chuyển các số thập phân tùy ý.
Ví dụ: bạn có thể viết số ba phẩy năm trong C++ là 3.5. Lưu ý rằng giữa các số không phải là dấu phẩy mà là dấu chấm.
Lấy 2 chữ số sau dấu phẩy trong C++
Số nguyên có thể được sử dụng rộng rãi trong ngôn ngữ lập trình C++, nhưng đôi khi bạn muốn lưu trữ các số lớn hơn. Biến kiểu dấu phẩy động cho phép lưu trữ các số thực như 4320.0, -3.33 hoặc 0.01226. Biến này cũng cho phép bạn chỉ định số lượng chữ số thập phân tuỳ ý.
Đấu phẩy động trong số thập phân có 3 loại: float, double và long double. Kích thước của số không được ước lượng chính xác trong C++, nhưng nó vẫn nằm trong một phạm vi nhất định. Số được biểu diễn theo hệ nhị phân và số chữ số phụ thuộc vào định dạng người viết chọn.
Dưới đây là một ví dụ về mã lập trình:
#include
int main()
{
std::cout 5.456 '2' std::endl;
std::cout 6.78f '2' std::endl;
std::cout 9876543.21 'n' std::endl;
return 0;
}
Kết quả:
5.46
6.78
9.87654e+06
Như bạn có thể thấy, các số thập phân có cấu trúc phức tạp được làm tròn thành 2 chữ số như mong muốn. Nếu bạn không muốn lấy 2 chữ số, bạn có thể thay đổi thành 'n' để thu gọn dãy số sao cho khoa học nhất.
Lỗi làm tròn trong các phép so sánh khi lấy số thập phân trong C++
Chỉ thông qua dấu phẩy, ta rất khó phân biệt số nhị phân (dữ liệu lưu trữ) và số thập phân (số chúng ta nhìn thấy). Ví dụ, số 1/10 được biểu diễn như 0.1 trong phần thập phân và chỉ nhìn thấy trong phạm vi 0.1. Tuy nhiên, trong hệ nhị phân của ngôn ngữ C++, số 0.1 được biểu diễn dưới dạng chuỗi vô hạn: 0.0001100110011001. Khi gán 0.1 cho một biến dấu phẩy động, các số quan trọng phía sau không thể hiểu được. Mặc dù sai số rất nhỏ, nhưng đối với công nghệ thông tin, sự chính xác là điều quan trọng.
Dưới đây là một ví dụ mã lập trình:
#include
#include // for std::setprecision()
int main()
{
double d{0.1};
std::cout d std::endl; // sử dụng độ chính xác mặc định của cout là 6
std::cout std::setprecision(17);
std::cout d std::endl;
return 0;
}
Kết quả:
0.1
0.10000000000000001
Kết quả trên cho thấy rằng số 0.1 không chính xác trong ngôn ngữ C++. Khi lấy số không làm tròn lên thành 17 chữ số, chúng ta thấy rằng biến d
không hoàn toàn là 0.1. Do giới hạn bộ nhớ của biến double
, chuỗi số có thể được cắt ngắn. Cuối cùng, các số chính xác đến 16 chữ số, nhưng không chính xác 0.1. Khi làm tròn số, có thể gây sai số nhỏ.
Việc học một ngôn ngữ phức tạp như C++ không phải là điều dễ dàng trong thời gian ngắn. Tuy nhiên, việc lấy 2 chữ số sau dấu phẩy trong C++ không quá phức tạp, nhưng cần thận trọng với cú pháp và các lỗi làm tròn số có thể xảy ra.