Làm thế nào để bạn làm tròn nhiều số trong python?

Hướng dẫn này đề cập đến một trong những thực hành cơ bản cơ bản – làm tròn số trong Python. Làm tròn số là một hàm toán học cơ bản nhưng cần thiết mà mọi người sử dụng để tính toán dễ dàng hơn. Mục đích của nó là thu được một giá trị gần với giá trị thực ở dạng đơn giản hơn nhiều

Hướng dẫn này cung cấp hướng dẫn chuyên sâu về cách làm tròn số trong Python. Tất cả những gì bạn cần trước đó là một IDE hoặc trình chỉnh sửa [chúng tôi đang sử dụng mã VS] và Python 3. 9. 0 trở lên

Có nhiều cách bạn có thể muốn làm tròn số. Python cung cấp rất nhiều phương thức để làm điều đó. Chúng ta sẽ khám phá tất cả chúng dưới đây

 

Mục lục

1
  • Làm tròn VS cắt ngắn
  • làm tròn lên
    • Làm tròn sử dụng round[]
    • Làm tròn bằng toán học. trần nhà[]
  • Làm tròn xuống
    • Làm tròn xuống bằng round[]
    • Làm tròn xuống bằng toán học. tầng lầu[]
  • Làm tròn một nửa lên hoặc xuống
  • phao tròn
  • làm tròn số thập phân
  • Làm tròn đến số nguyên gần nhất [5 hoặc 10]
  • Làm tròn đến phân số gần nhất
  • Làm tròn số âm
  • Vòng không có vòng [] [sử dụng divmod]
  • Mảng NumPy tròn

 

Làm tròn VS cắt ngắn

Làm tròn xấp xỉ một giá trị đến số gần nhất, giúp đơn giản hóa các phép tính trong khi vẫn giữ được độ chính xác ở một mức độ nào đó

Trong khi đó, cắt bớt loại bỏ các chữ số sau số vị trí thập phân được chỉ định mà không xem xét bất kỳ điều kiện nào

Tất nhiên, điều này có thể tạo ra sự khác biệt lớn khi có sự khác biệt nhỏ về giá trị. Một ví dụ về thị trường chứng khoán làm rõ mọi thứ hơn nhiều

Sàn giao dịch chứng khoán Vancouver [VSE] khét tiếng vì mất 25 điểm mỗi tháng vào năm 1982 vì họ cắt bớt các giá trị đến ba chữ số thập phân nhiều lần mỗi ngày. Hãy xem xét đoạn mã sau

import random 
randomValues = [random.uniform[0.01, 0.1] for i in range[500000]]
def truncateNumber[num]:
    return int[num * 1000] / 1000
sumOfNumbers = 0
sumOfTruncate = 0
for n in randomValues:
    sumOfNumbers = sumOfNumbers + n
    sumOfTruncate = truncateNumber[sumOfTruncate + n]
print["Truncating upto 3 decimal places:"]
print["Original Sum = ", sumOfNumbers]
print["Total Using Truncate = ", sumOfTruncate]
print["Difference [truncate] = ", sumOfNumbers - sumOfTruncate, '\n']           
print["Using round[] upto 3 decimal places:"]
sumOfNumbers1 = 0
sumOfTruncate1 = 0
for n in randomValues:
    sumOfNumbers1 = sumOfNumbers1 + n       
    sumOfTruncate1 = round[sumOfTruncate1 + n, 3]
print["Original Sum = ", sumOfNumbers1]

print["Total Using round[] = ", sumOfTruncate1]
print["Difference [round[]] = ", sumOfNumbers1 - sumOfTruncate1]

Hãy chia nhỏ mã để làm cho nó toàn diện hơn

  1. Chúng tôi đã nhập thư viện ngẫu nhiên, sử dụng thư viện này chúng tôi đã khởi tạo một mảng các số ngẫu nhiên trong khoảng từ 0. 01 và 0. 1 sử dụng ngẫu nhiên. đồng phục[]. Đây là trong khoảng 500.000 giây
  2. Tiếp theo, hàm truncate[num] nhận một giá trị và cắt bỏ các chữ số sau 3 chữ số thập phân
  3. Chúng tôi lấy tổng ban đầu, tổng thu được sau khi cắt bớt các giá trị và sau đó tính chênh lệch
  4. Sau đó, chúng tôi sẽ sử dụng round[] trên cùng một tập hợp các giá trị và tìm tổng ban đầu, tổng sau khi làm tròn các giá trị và sự khác biệt giữa cả hai

Đầu ra cho thấy sự khác biệt đáng kể giữa cả hai chiến lược. Rất nhiều độ chính xác bị mất khi chúng ta sử dụng truncate thay vì round[], điều này có thể dẫn đến các vấn đề nghiêm trọng

 

làm tròn lên

Làm tròn số ở dạng thập phân có nghĩa là chuyển đổi chúng thành một số nguyên lớn hơn số đó

Nó làm giảm độ chính xác trong công việc của bạn nhưng cũng làm cho việc tính toán trở nên đơn giản hơn. Trong Python, có hai cách để làm tròn số

Làm tròn sử dụng round[]

Cách tiếp cận đầu tiên mà mọi người sử dụng để làm tròn số trong Python là hàm làm tròn tích hợp sẵn – round[n, i]. Nó nhận hai giá trị làm đối số;

Đối số thứ hai là tùy chọn. Nếu muốn làm tròn số, bạn chỉ cần đưa đối số đầu tiên vào round[], i. e. , giá trị mà bạn muốn thực hiện chức năng

Đối với số thập phân lớn hơn 0. 5, round[] luôn trả về giá trị số nguyên cao hơn

Ví dụ: nếu bạn đang làm tròn số 10. 6 sử dụng round[], trình thông dịch Python sẽ hiển thị 11. Để làm cho nó rõ ràng hơn, hãy xem đoạn mã dưới đây

value1 = 6.925
value2 = 5.42
value3 = 9.87
round1 = round[value1]
round2 = round[value2]
round3 = round[value3]
print['Values'.ljust[20], 'Rounded Up']
print[str[value1].ljust[20], round1]
print[str[value2].ljust[20], round2]
print[str[value3].ljust[20], round3]

Đầu tiên, chúng ta gán giá trị float cho ba biến value1, value2 và value3. Tiếp theo, chúng ta chuyển chúng dưới dạng đối số trong hàm round[]

Cuối cùng, chúng tôi in hai cột, một cột có giá trị ban đầu và cột thứ hai có giá trị làm tròn. Bạn sẽ lưu ý rằng mã trả về 7 và 10, các giá trị nguyên cao hơn cho 6. 925 và 9. 87

Tuy nhiên, trong 5. 42, đầu ra là 5 vì vị trí thập phân có 0. 42 – nhỏ hơn 0. 6. Đây có thể là một vấn đề trong nhiều lĩnh vực, đó là lý do tại sao chúng tôi chuyển sang phương pháp làm tròn số thứ hai

Làm tròn bằng toán học. trần nhà[]

Để sử dụng hàm ceil[], bạn sẽ phải nhập thư viện toán học. Hàm này tự động trả về giá trị nguyên cao hơn cho một số thập phân

Ví dụ, cả 10. 2 và 10. 6 sẽ trả về 11, bất kể số thập phân có lớn hơn 0 hay không. 5 hay không. Xem mã dưới đây

import math
print[math.ceil[10.2]]
print[math.ceil[10.6]]

Hoạt động của ceil[] làm cho việc làm tròn số thuận tiện hơn nhiều so với round[]

 

Làm tròn xuống

Nếu bạn đã học cách làm tròn lên, thì việc làm tròn xuống sẽ rất dễ dàng. Bạn có thể đi hai cách về nó

Làm tròn xuống bằng round[]

Cho số thập phân 0. 5 trở xuống, hàm round[] trả về giá trị số nguyên nhỏ hơn. cho 4. 2, bạn sẽ nhận được 4. Hãy thay đổi mã được sử dụng trước đó để làm cho mọi thứ rõ ràng hơn

value1 = 3.2
value2 = 4.5
value3 = 4.852
round1 = round[value1]
round2 = round[value2]
round3 = round[value3]
print['Values'.ljust[20], 'Rounded Down']
print[str[value1].ljust[20], round1]
print[str[value2].ljust[20], round2]
print[str[value3].ljust[20], round3]

Đầu tiên, chúng tôi lưu trữ các giá trị float trong ba biến. Tiếp theo, chúng tôi in hai cột cho các giá trị ban đầu và làm tròn. Như bạn có thể thấy, chúng tôi nhận được kết quả chính xác cho 3. 2 và 4. 5

Tuy nhiên, đối với một số thập phân như 4. 852, round[] có thể sai. Một điều đáng chú ý là nếu vị trí thập phân có 0. 5, round[] sẽ làm tròn giá trị lên hoặc xuống, tùy thuộc vào số nguyên nào trong hai số nguyên mà nó nằm giữa là số chẵn

Do đó, đối với 0. 5, hàm luôn trả về số chẵn. Chúng ta hãy xem một cách thuận tiện hơn để làm tròn nó xuống

Làm tròn xuống bằng toán học. tầng lầu[]

Bằng cách nhập thư viện toán học vào mã của bạn, bạn có thể sử dụng hàm floor[] của nó. Nó tự động trả về giá trị thấp hơn cho một số thập phân

Do đó, đối với cả 8. 3 và 8. 9, bạn nhận được 8. Hãy xem xét mã dưới đây

import math
print[math.floor[8.3]]
print[math.floor[8.9]]

Bạn có thể thấy rằng đầu ra của mã cho chúng ta kết quả chính xác mà chúng ta muốn, làm cho floor[] trở thành giải pháp thay thế tốt hơn để làm tròn số mong muốn

 

Làm tròn một nửa lên hoặc xuống

Cả làm tròn nửa lên và nửa xuống đều đề cập đến việc làm tròn một số cụ thể đến chữ số gần nhất để đảm bảo độ chính xác cao hơn

Tuy nhiên, trong một nửa, giá trị nằm giữa hai số sẽ chuyển đổi thành số cao hơn. Trong khi đó, một nửa xuống chuyển đổi giá trị thành số thấp hơn

Dưới đây, chúng tôi đã tập hợp một mã để xem cách thức hoạt động của nửa vòng lên và xuống

import decimal
import math
def roundHalfUp[value, decimals = 0]:
    multiplyWith = 10 ** decimals
    return math.floor[value * multiplyWith + 0.5] / multiplyWith
def roundHalfDown[value, decimals = 0]:
    multiplyWith = 10 ** decimals
    return math.ceil[value * multiplyWith - 0.5] / multiplyWith
print[roundHalfUp[15.28, 1]]
print[roundHalfUp[15.25, 1]]
print[roundHalfDown [1.5]]
print[roundHalfDown[2.5, 1]]

Đầu tiên, bạn dịch chuyển dấu thập phân về phía bên phải đến những nơi được chỉ định. Tiếp theo, bạn xác định giá trị của chữ số sau dấu thập phân đã dịch chuyển

Lớn hơn 5, nhỏ hơn 5 hay bằng 5? . 5 và áp dụng hàm sàn cho nửa vòng. Đối với nửa vòng xuống, bạn trừ 0. 5 từ số và áp dụng phép toán. chức năng trần[]

Đầu ra hiển thị các giá trị nửa lên và nửa xuống được làm tròn chính xác

 

phao tròn

Bây giờ bạn đã quen với hàm round[], bạn có thể dễ dàng sử dụng hàm này để làm tròn các giá trị float. Trước đây, chúng tôi đã bỏ qua đối số tùy chọn thứ hai để làm tròn lên và xuống

Tất cả những gì bạn phải làm là chỉ định số chữ số bạn muốn làm tròn số để làm tròn giá trị float. Hãy xem đoạn mã dưới đây

print[round[10.9258, 2]]
print[round[6.9054, 1]]
print[round[110.9873, 3]]
print[round[2000.32537453, 4]]
print[round[7.9424, 2]]

Đầu ra cho thấy rằng mỗi giá trị float đã được làm tròn đến số vị trí thập phân được chỉ định làm đối số

 

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

Python cung cấp một mô-đun thập phân cho phép độ chính xác cao hơn khi xử lý các số. Nó được thiết kế bằng cách xem xét cách mọi người làm số học trong cuộc sống thực

Do đó, nó bảo tồn các chữ số có nghĩa, đưa ra biểu diễn số thập phân chính xác hơn và cho phép độ chính xác linh hoạt theo sự thuận tiện của người dùng. Mô-đun này cung cấp nhiều chiến lược làm tròn

  1. ROUND_CEILING. giá trị làm tròn lớn hơn số
  2. LÀM TRÒN XUỐNG. giá trị làm tròn di chuyển về phía 0
  3. ROUND_FLOOR. giá trị làm tròn nhỏ hơn số
  4. ROUND_HALF_DOWN. các giá trị làm tròn di chuyển nửa chừng về 0
  5. ROUND_HALF_EVEN. các giá trị làm tròn di chuyển một nửa đến số chẵn gần nhất
  6. ROUND_HALF_UP. giá trị làm tròn di chuyển nửa chừng từ 0
  7. VÒNG_LÊN. giá trị làm tròn di chuyển ra khỏi 0

Hãy cùng xem đoạn mã dưới đây để quan sát cách thức hoạt động của từng chức năng này

import random
randomValues = [random.uniform[0.01, 0.1] for i in range[500000]]
def truncateNumber[num]:
    return int[num * 1000] / 1000
sumOfNumbers = 0
sumOfTruncate = 0
for n in randomValues:
    sumOfNumbers = sumOfNumbers + n
    sumOfTruncate = truncateNumber[sumOfTruncate + n]
print["Truncating upto 3 decimal places:"]
print["Original Sum = ", sumOfNumbers]
print["Total Using Truncate = ", sumOfTruncate]
print["Difference [truncate] = ", sumOfNumbers - sumOfTruncate, '\n']
print["Using round[] upto 3 decimal places:"]
sumOfNumbers1 = 0
sumOfTruncate1 = 0
for n in randomValues:
    sumOfNumbers1 = sumOfNumbers1 + n       
    sumOfTruncate1 = round[sumOfTruncate1 + n, 3]
print["Original Sum = ", sumOfNumbers1]
print["Total Using round[] = ", sumOfTruncate1]
print["Difference [round[]] = ", sumOfNumbers1 - sumOfTruncate1]   

Đầu tiên, chúng tôi nhập mô-đun thập phân. Tiếp theo ta gán giá trị float cho biến round_num rồi làm tròn 2 vị trí và lưu vào final_val

Cuối cùng, chúng tôi áp dụng tất cả các chiến lược để làm tròn số thập phân. Ở đây, quantize[] đóng một vai trò thiết yếu. Đầu tiên, trước dấu chấm [. ], chúng tôi chỉ định giá trị được làm tròn

Vì chúng tôi muốn làm tròn số thập phân, chúng tôi khởi tạo round_num dưới dạng số thập phân. Trong ngoặc của. quantize[], chúng tôi chỉ định các vị trí mà chúng tôi muốn làm tròn số thập phân

Cuối cùng, chúng tôi đã in kết quả. Đầu ra cho thấy sự khác biệt trong kết quả tùy thuộc vào chiến lược làm tròn được sử dụng

 

Làm tròn đến số nguyên gần nhất [5 hoặc 10]

Có thể xảy ra trường hợp bạn muốn làm tròn một giá trị thành bội số của một chữ số cụ thể. Hãy xem xét hai cơ sở ở đây, 5 và 10

Chúng tôi đang tìm cách làm tròn một số để có được đầu ra luôn là bội số của một trong hai cơ sở, tôi. e. 5 hoặc 10. Ví dụ: đối với 14, làm tròn đến số nguyên gần nhất là 5 sẽ cho bạn 15, trong khi đối với 10, bạn cần 10

Hãy xem đoạn mã sau để tìm hiểu làm thế nào để làm điều này

________số 8

 

Giá trị được làm tròn là n, trong khi cơ số là 5 hoặc 10. Cơ sở có thể được đặt thành bất kỳ số nào bạn muốn. Bước tiếp theo là chia giá trị cho cơ số và làm tròn kết quả để có được một số nguyên

Cuối cùng, nhân số nguyên này với cơ số của bạn để lấy bội số của nó làm hình tròn của bạn. Đầu ra cho thấy các số khác nhau được làm tròn như thế nào với 5 hoặc 10 làm cơ số

 

Làm tròn đến phân số gần nhất

Python cũng bao gồm một mô-đun phân số. Nó cho phép thực hiện nhiều phép tính số học trên các phân số hoặc làm tròn các phân số lên đến các chữ số mong muốn. Hãy cùng xem đoạn mã dưới đây

from fractions import Fraction
fractionValue = Fraction[50, 3]
roundedWithoutLimit = round[fractionValue]
roundedWithLimit = round[fractionValue, 2]
print['Fraction'.ljust[15], 'Round Without Limit'.ljust[20], 'Round With Limit']
print[str[fractionValue].ljust[15], str[roundedWithoutLimit].ljust[20], roundedWithLimit]

Đảm bảo rằng bạn nhập Phân số từ mô-đun phân số để sử dụng nó trong mã của mình. Tiếp theo, chúng ta khởi tạo một đối tượng phân số và gán tử số là 50 và mẫu số là 3

Tiếp theo, ta thực hiện làm tròn hai cách. Chúng tôi không chỉ định số vị trí chúng tôi muốn làm tròn phân số và gán giá trị cho biến làm trònWithoutLimit

Tiếp theo, chúng tôi làm tròn phân số lên đến 2 chữ số thập phân và gán giá trị cho WithLimit được làm tròn. Cuối cùng, chúng tôi in kết quả trong ba cột, trong đó có sự khác biệt rõ ràng giữa hai kết quả

 

Làm tròn số âm

Bây giờ bạn đã học về cách làm tròn số dương, việc xử lý số âm sẽ không thành vấn đề. Bạn có thể làm tròn số âm theo ba cách

Phương thức đầu tiên là hàm dựng sẵn cơ bản có trong Python i. e. , vòng[]. Nó hoạt động cho các số nguyên dương và âm tương tự

Nếu số thập phân lớn hơn 0. 5, hàm trả về số nguyên cao hơn trong hai số nguyên có giá trị nằm giữa

Mặt khác, nếu nó nhỏ hơn 0. 5, round[] trả về số nguyên nhỏ hơn. Hãy nhớ rằng cho 0. 5, round[] luôn trả về một số nguyên chẵn

Vì vậy, đối với hai giá trị float, 9. 2 và 4. 5, bạn nhận được 9 và 4, tương ứng. Phương pháp thứ hai là sử dụng toán học. chức năng trần[]. Trần nhà luôn được sử dụng để làm tròn giá trị

Giá trị float -3. 6 nằm giữa -3 và -4. Số nguyên lớn hơn là -3, vì vậy ceil trả về giá trị đó. Do đó, đối với các giá trị âm, trần di chuyển xuống dưới, trái ngược với hoạt động của nó đối với các số dương

Thứ ba, bạn có thể sử dụng toán học. hàm sàn []. Nó luôn được sử dụng để làm tròn xuống các giá trị. Hãy lấy ví dụ tương tự về giá trị float -3. Nó nằm giữa -3 và -4

Số nguyên nhỏ hơn là -4, do đó toán học. sàn [] sẽ trả lại điều đó. Do đó, đối với các giá trị âm, nó di chuyển lên trên thang số, trái ngược với hoạt động của nó đối với các số dương.

Hãy xem đoạn mã sau để xem Python làm tròn số âm như thế nào

value1 = 6.925
value2 = 5.42
value3 = 9.87
round1 = round[value1]
round2 = round[value2]
round3 = round[value3]
print['Values'.ljust[20], 'Rounded Up']
print[str[value1].ljust[20], round1]
print[str[value2].ljust[20], round2]
print[str[value3].ljust[20], round3]
0

Đầu tiên, chúng tôi nhập thư viện toán học để đảm bảo quyền truy cập vào các chức năng trần và sàn. Tiếp theo, chúng ta gán giá trị float cho ba biến – value1, value2 và value3

Cuối cùng, chúng tôi in 4 cột. Cái đầu tiên dành cho số âm, đang được làm tròn. Ba cột còn lại dành cho round[], math. trần [], toán học. sàn [] tương ứng

Kết quả cho thấy sự khác biệt rõ ràng giữa các chiến lược làm tròn số âm đã thảo luận ở trên

 

Vòng không có vòng [] [sử dụng divmod]

divmod[num1, num2] là một hàm trong Python lấy số bị chia và số chia làm đối số và trả về một bộ gồm thương và số dư. Chúng ta có thể sử dụng nó để làm tròn một số đến 5 hoặc 10 gần nhất. Hãy cùng xem đoạn mã sau

value1 = 6.925
value2 = 5.42
value3 = 9.87
round1 = round[value1]
round2 = round[value2]
round3 = round[value3]
print['Values'.ljust[20], 'Rounded Up']
print[str[value1].ljust[20], round1]
print[str[value2].ljust[20], round2]
print[str[value3].ljust[20], round3]
1

Đầu tiên, chúng ta đã định nghĩa một hàm lấy số cần làm tròn i. e. , giá trị, làm đối số. Tiếp theo, chúng tôi áp dụng divmod[] trên giá trị với số chia là 5

Để làm tròn đến 10 gần nhất, hãy thay đối số thứ hai bằng 10. Tiếp theo, chúng tôi kiểm tra xem phần còn lại có lớn hơn hoặc bằng 5 không. Nếu vậy, chúng tôi thêm 1 vào thương số, có nghĩa là chúng tôi đang làm tròn lên

Cuối cùng, chúng tôi nhân thương số với 5 để trả về bội số của 5 là câu trả lời được làm tròn. Cuối cùng, chúng tôi vượt qua 105. 2 làm đối số cho chức năng này. Kết quả in ra 105. 0 là câu trả lời, bội số gần nhất của 5

 

Mảng NumPy tròn

Mảng NumPy được sử dụng rộng rãi để lưu trữ dữ liệu trong khoa học dữ liệu và tính toán khoa học. Đó là một chiến lược thiết thực vì các tính năng phát sóng và vector hóa của nó

Những chức năng này cho phép được áp dụng cho toàn bộ mảng cùng một lúc thay vì một phần tử tại một thời điểm. Đảm bảo rằng bạn đã cài đặt NumPy trên hệ thống của mình để sử dụng mảng NumPy

Các mảng này có thể được làm tròn bằng các hàm round[] và around[]. Hãy xem đoạn mã sau

value1 = 6.925
value2 = 5.42
value3 = 9.87
round1 = round[value1]
round2 = round[value2]
round3 = round[value3]
print['Values'.ljust[20], 'Rounded Up']
print[str[value1].ljust[20], round1]
print[str[value2].ljust[20], round2]
print[str[value3].ljust[20], round3]
2

Đầu tiên, chúng tôi nhập mô-đun numpy và gán nó cho np. Tiếp theo, chúng tôi khởi tạo một mảng 1×6. Cuối cùng, chúng ta sẽ sử dụng các hàm round[] và around[] và chuyển mảng và số vị trí mà chúng ta muốn làm tròn hàm đó lên tới

Cuối cùng, chúng tôi in kết quả và bạn có thể quan sát thấy rằng cả hai hàm đều cho kết quả như nhau

  • Chia sẻ trên facebook
  • Tweet trên Twitter

Mokhtar Ebrahim

Mokhtar là người sáng lập LikeGeek. com. Anh ấy làm quản trị viên hệ thống Linux từ năm 2010. Ông chịu trách nhiệm duy trì, bảo mật và khắc phục sự cố máy chủ Linux cho nhiều khách hàng trên khắp thế giới. Anh ấy thích viết các tập lệnh shell và Python để tự động hóa công việc của mình

Làm cách nào để làm tròn một số thành bội số gần nhất của 5 trong Python?

Để làm tròn một số lên tới 5 gần nhất. .
gọi toán học. ceil[] truyền cho nó số chia cho 5
Nhân kết quả với 5
Kết quả phép tính là số được làm tròn đến năm gần nhất

Lệnh làm tròn số trong Python là gì?

Hàm Python round[] . Số thập phân mặc định là 0, nghĩa là hàm sẽ trả về số nguyên gần nhất.

Chủ Đề