Thứ Năm, 1 Tháng Mười Hai 2022
Trang chủLập trìnhLập trình C/C++Làm tròn số thập phân, hiện 2 chữ số thập phân sau...

Làm tròn số thập phân, hiện 2 chữ số thập phân sau dấu phẩy C và C++

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ả

Làm tròn số thập phân, hiện 2 chữ số thập phân sau dấu phẩy C và C++

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

Làm tròn số thập phân

Để 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

#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ả:

Làm tròn đến số thập phân thứ n

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ả:

Chỉ hiện 2 số thập phân sau dấu phẩy

Đố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

Chỉ hiện 2 số thập phân sau dấu phẩy

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]

0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x