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 Show
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ắnLà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
Đầ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ênLà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ốngNế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ốngCả 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ònBâ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ânPython 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
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ố 8Giá 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ấtPython 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ố âmBâ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ònMả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
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. |