Trong bài viết này chúng ta sẽ tìm hiểu về cách làm tròn số, cũng như cách để format chỉ hiển thị 2 số thập phân sau dấu phẩy trong lập trình C/C++.
Làm tròn số thập phân
Làm tròn đến số nguyên
Trong C hay C++ để làm tròn số thập phân ta sử dụng hàm round() trong thư viện math.h. Nếu bạn muốn phân biệt rõ rằng thuần C và C++ trong chương trình thì với C là thư viện #include <math.h>, C++ ta dùng thư viện là #include <cmath>
Ta có ví dụ làm tròn số như sau:
#include <stdio.h>
#include <math.h>
int main()
{
float a = 5.654;
int a1 = round(a);
printf("Lam tron so %f ta duo: %d", a, a1);
float b = 5.454;
int b1 = round(b);
printf("\nLam tron so %f ta duo: %d", b, b1);
return 0;
}
Kết quả
Vì là trong lập trình mà, sẽ có rất nhiều trường hợp ta không làm tròn theo quy tác toán học, mà ta chỉ mặc định sẽ làm tròn lên hoặc xuống với một mục đích cụ thể nào đó. Vậy thư viện math cũng cung cấp cho ta 2 hàm để thực hiện việc đó.
double ceil ( double ); => Hàm này sẽ chỉ luôn luôn làm tròn lên
double floor ( double ); => Ngược lại với hàm này sẽ chỉ luôn luôn làm tròn xuống.
Ta có ví dụ cụ thể
#include <stdio.h>
#include <math.h>
int main()
{
float a = 5.9999;
int a1 = ceil(a);
int a2 = floor(a);
printf("Lam tron so %f voi ham ceil: %d", a, a1);
printf("\nLam tron so %f voi ham floor: %d", a, a2);
float b = 9.11111;
int b1 = ceil(b);
int b2 = floor(b);
printf("\n\n\n\nLam tron so %f voi ham ceil: %d", b, b1);
printf("\nLam tron so %f voi ham floor: %d", b, b2);
return 0;
}
Kết quả khi chạy chương trình
Để hiểu rõ hơn các hàm tốt nhất là bạn nên tự chạy thử chương trình nhé.
Làm tròn đến số thập phân thứ n
Cách làm: Ta lấy số đó nhân với 10^x rồi sử dụng các hàm làm tròn trên làm tròn thành số nguyên, sau đó ta lại chia số đó cho 10^x như vậy là ta đã làm tròn được đến số thập phân thứ n(Với x là số chữ số sau dấu phẩy muốn làm tròn).
Ví dụ: Ta sẽ làm tròn số 9.127658 tới chữ số thập phân thứ 2
- Khóa học lập trình C/C++ từ A-Z cho người mới – Giảm giá 40% hôm nay
- Khóa học Java cơ bản dành cho người mới bắt đầu- Giảm 40% hôm nay
- Khóa học lập trình Android từ cơ bản đến thành thạo – Giảm ngay 40%
#include <stdio.h>
#include <math.h>
int main()
{
float a = 9.127658;
//Ta nhân số 9.127658 với 100 sau đó ta làm tròn kết quả, rồi lấy tiếp kết quả chia cho 100 như vậy là đã làm tròn số trên tới thập phân thứ 2, tương tự nếu lafm tròn đến stp thứ 3 thì thay 100 bằng số 1000
float a1 = (round(a * 100))/100;
printf("Lam tron so %f den chu so thap phan thu hai: %f", a, a1);
return 0;
}
Kết quả:
Tuy nhiên, trong C thì thường sẽ mặc định hiển thị 6 số sau dấu phẩy cho dù những số sau là số 0. Vậy làm sao để chỉ hiện 2 số sau dấu phẩy.
Chỉ hiện 2 số thập phân sau dấu phẩy
Đối với C
Cách làm tương đối đơn giản, bình thường để hiện số thập phân trong C chúng ta sẽ sử dụng chuỗi định dạng %f trong hàm printf. Vậy bây h ta thay đổi chuỗi định dạng thành %.xf với x là số chữ số thập phân muốn hiện sau dấu phẩy. Như vậy tất cả các số sau x chữ số sẽ bị loại bỏ khi hiển thị.
Ta làm ví dụ: Cũng với chương trình trên nhưng bây h ta sẽ chỉ hiện 2 số sau dấu phẩy
#include <stdio.h>
#include <math.h>
int main()
{
float a = 9.127658;
float a1 = (round(a * 100))/100;
printf("Lam tron so %f den chu so thap phan thu hai: %.2f", a, a1);
return 0;
}
Kết quả:
Đối với C++
Trong C++ hàm setprecision(2) và lệnh fixed trong thư viện iomanip sẽ giúp chúng ta thực hiện việc đó.
Hàm setprecision(2) này cũng sẽ tự làm tròn số đến chữ số thập phân mà ta muốn hiển thị.
Ta có ví dụ
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float a = 9.127658;
cout << setprecision(2) << fixed << "a = " << a << endl;
}
Và đây là kết quả khi chạy chương trình
Cảm ơn bạn đã đọc bài viết! Chúc học tốt nhé!
[Xem tất cả bài viết chủ đề C/C++ tại đây]
sao mình lấy 5/2 mà nó vẫn hiện 2 thôi vậy ạ
Khi chia 1 trong 2 số (số chia hoặc số bị chia) phải có kiểu dữ liệu là foat, và khi in nếu sử dụng lệnh printf thì định dạng cần phải là %f. Ví dụ: printf(“%f”, 5/2.);
Anh ơi em muốn con số của mình chỉ hiện hai số sau dấu phẩy thì làm sao vậy anh. Ví dụ như 6.87 thì màn hình xuất ra con số 87 thôi ấy
với số a đã được làm tròn đến số thập phân thứ hai, chỉ cần lấy a trừ đi phần nguyên của chính a ta sẽ được 2 số phần thập phân, sau đó nhân với 100 là được||| = (a – (int)a) * 100
vãi lon
sao ở trên a là 9.127658
xuống dưới phải là 9. 12 chứ sao 13
?? ăn với chả nói , xuống lớp 1 học lại nhá cu
Nếu chưa biết quy tắc làm tròn số thì bạn quay lại học lại lớp 6 rồi hãy học lập trình nhé… Nghe từ vãi lồn thì bạn cũng chẳng phải là người lịch sự gì rồi..