Làm tròn số trong python bằng hàm round | Laptrinhcanban.com

Làm tròn số trong python bằng hàm round

Hướng dẫn cách làm tròn số trong python. Bạn sẽ học được cách làm tròn số trong python bằng cách sử dụng hàm round trong bài học này.

Làm tròn số trong python bằng cách sử dụng hàm round()

Khi cài đặt python, một số hàm số đã được tích hợp sẵn có thể sử dụng luôn mà không cần import, trong đó có hàm round().

Chúng ta sử dụng hàm round() để làm tròn số (số nguyên hoặc số thực) trong python với cú pháp sau đây:

round(number , ndigits)

Trong đó round để gọi hàm , number là số cần làm tròn và ndigitsvị trí thập phân muốn làm tròn. Nếu không chỉ định ndigits thì mặc định ndigits bằng 0.
Chúng ta có thể sử dụng hàm round với những trường hợp sau đây:

Làm tròn số thực trong python

Đối với số thực, chúng ta có thể tự do làm tròn số sau dấu phẩy như các ví dụ sau đây:

Làm tròn số sau dấu phẩy và biến số thực thành số nguyên bằng hàm round()

Bằng cách không chỉ định ndigits trong hàm round(), chúng ta có thể làm tròn số sau dấu phẩy và biến số thực thành số nguyên không chứa dấu phẩy như ví dụ sau đây:

f = 123.456

print(type(f))
# <class 'float'>

print(round(f))
# 123

print(type(round(f)))
# <class 'int'>

Bạn có thể thấy số fsố thực float đã được làm tròn số sau dấu phẩy và trở thành số nguyên int trong ví dụ này.

Làm tròn số thực và chỉ định vị trí thập phân cần làm tròn bằng hàm round()

Bằng cách chỉ định giá trị của ndigits trong hàm round(), chúng ta có thể chỉ định vị trí thập phân cần làm tròn khi làm tròn số thực trong python. Nếu ndigits có giá trị âm thì sẽ chỉ định vị trí thập phân bên trái dấu phẩy, và giá trị dương sẽ chỉ định vị trí thập phân bên phải dấu phẩy. Ví dụ -1 là hàng chục, -2 là hàng trăm, còn 0 thì sẽ được lược bỏ.

chữ số:       1   2  3 ,  4  5  6
ndigits      -2  -1  0    1  2  3

Ví dụ cụ thể như sau:

f = 123.456

print(type(f))
# <class 'float'>

print(round(f, 1))
# 123.5

print(round(f, 2))
# 123.46

print(round(f, -1))
# 120.0

print(round(f, -2))
# 100.0

print(round(f, 0))
# 123.0

print(type(round(f, 0)))
# <class 'float'>

Bạn có thể thấy số thực đã được làm tròn tại các vị trí khác nhau, và kiểu dữ liệu số thực float không thay đổi trong kết quả nhận về.

Làm tròn số nguyên trong python bằng hàm round()

Tương tự với số thực, bằng cách chỉ định hoặc rút gọn giá trị của ndigits, chúng ta có thể tùy ý làm tròn số tại vị trí cần làm tròn. Hãy xem một số ví dụ cụ thể sau đây. Lưu ý là kết quả làm tròn một số nguyên cũng sẽ là một số nguyên.

i = 99518

print(round(i))
# 99518

print(round(i, 2))
# 99518

print(round(i, -1))
# 99520

print(round(i, -2))
# 99500

print(round(i, -3))
# 100000

Hàm round () không phải là một phép làm tròn bỏ số mà là một phép làm tròn chẵn

Lưu ý là tại phiên bản mới nhất của python, Hàm round () không phải là một phép làm tròn bỏ số mà là một phép làm tròn chẵn (sử dụng trong ngân hàng).

Cách làm tròn chẵn được định nghĩa như sau:

Nếu phân số nhỏ hơn 0,5 thì được làm tròn xuống, nếu phân số lớn hơn 0,5 thì được làm tròn, còn nếu phân số bằng 0,5 thì làm tròn xuống hoặc làm tròn lên sao cho kết quả là số chẵn.
Làm tròn chẵn-wikipedia

Theo website chính thức của python thì số 0.5 có thể làm tròn chẵn thành 0, số 1.5 có thể làm tròn chẵn thành 2.

Chúng ta hãy cùng xem một số ví dụ sau:

print('0.4 =>', round(0.4))
print('0.5 =>', round(0.5))
print('0.6 =>', round(0.6))
# 0.4 => 0
# 0.5 => 0
# 0.6 => 1

print('4 =>', round(4, -1))
print('5 =>', round(5, -1))
print('6 =>', round(6, -1))
# 4 => 0
# 5 => 0
# 6 => 10

Lưu ý là với cách làm tròn chẵn, 0.5 không phải là lúc nào cũng sẽ làm tròn lên hay làm tròn xuống.

print('0.5 =>', round(0.5))
print('1.5 =>', round(1.5))
print('2.5 =>', round(2.5))
print('3.5 =>', round(3.5))
print('4.5 =>', round(4.5))
# 0.5 => 0
# 1.5 => 2
# 2.5 => 2
# 3.5 => 4
# 4.5 => 4

Ngoài ra khi sử dụng hàm round() với số thực dấu phẩy động, từ chữ số thập phân thứ 2 trở đi, không phải lúc nào chúng ta cũng có thể thu được giá trị đúng.

print('0.05 =>', round(0.05, 1))
print('0.15 =>', round(0.15, 1))
print('0.25 =>', round(0.25, 1))
print('0.35 =>', round(0.35, 1))
print('0.45 =>', round(0.45, 1))
# 0.05 => 0.1
# 0.15 => 0.1
# 0.25 => 0.2
# 0.35 => 0.3
# 0.45 => 0.5

Lý do là theo như tài liệu Python document thì chúng ta vốn không thể biểu diễn số thực một cách chính xác dưới dạng thập phân:

Lưu ý sử dụng hàm round () trên các số thực dấu phẩy động có thể thu được kết quả ngạc nhiên. Ví dụ: round (2,675, 2) cho kết quả 2,67 thay vì 2,68 như mong đợi. Đây không phải là lỗi: Đây là kết quả do hầu hết các số thập phân không được biểu diễn chính xác bằng số dấu phẩy động.

Nếu bạn muốn đưa ra kết quả chính xác khi làm tròn chẵn số thực, hãy sử dụng phương thức quantize() được tích hợp trong thư viện chuẩn decimal mà chúng ta sẽ cùng tìm hiểu trong bài tiếp theo nhé.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách làm tròn số trong python bằng hàm round trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.