Hướng dẫn how to round in python without using the round function - làm thế nào để làm tròn trong python mà không cần sử dụng hàm làm tròn

-2

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi chưa quen với Python và một người bạn đã thách thức tôi một câu hỏi đơn giản mà tôi đã bối rối: Vui lòng xây dựng cho tôi một chương trình đơn giản làm tròn số mà không sử dụng bất kỳ hoạt động toán học nào, như Round. Tôi chỉ muốn tìm ra điều này cho một vị trí thập phân duy nhất - như 2.1 hoặc 5,8 - không có gì lạ mắt với những vị trí thập phân dài. Tôi tin rằng đó là một cái gì đó giống như một câu lệnh if/sau đó - nếu = 5: # Eliminate the decimal point in_num_str_split = ''.join[in_num_str.split['.']] # Get the length of the integer portion of the number int_len = len[in_num_str.split['.'][0]] # Initialize the variables used in the loop out_num_str = '' done = False # Loop over all the digits except the last digit in reverse order for num in in_num_str_split[::-1][1:]: # Get the next consecutive integer num_nxt_int = nxt_int[num] # Determine if the current digit needs to be increased by one if [num_nxt_int == '0' or num == in_num_str_split[-2] or out_num_str[-1] == '0'] and not done: out_num_str = out_num_str + num_nxt_int else: out_num_str = out_num_str + num done = True # Build the rounded decimal out_num_str = [out_num_str[::-1][:int_len] + '.' + out_num_str[::-1][int_len:]].rstrip['0'].rstrip['.'] else: # Return all except the last digit out_num_str = in_num_str[:-1] return out_num_str print round[input]

Đã trả lời ngày 17 tháng 7 năm 2013 lúc 18:58Jul 17, 2013 at 18:58

tlewis3348tlewis3348tlewis3348

4142 Huy hiệu vàng7 Huy hiệu bạc20 Huy hiệu đồng 202 gold badges7 silver badges20 bronze badges

Hướng dẫn này chạm vào 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 là một chức năng toán học cơ bản nhưng thiết yếu mà mọi người sử dụng để làm cho tính toán dễ dàng hơn. Mục đích của nó là có được một giá trị gần giá trị thực tế ở dạng đơn giản hơn nhiều.

Hướng dẫn này cung cấp một hướng dẫn chuyên sâu về các số làm tròn trong Python. Tất cả những gì bạn cần trước là IDE hoặc Trình chỉnh sửa [chúng tôi 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 một số. Python cung cấp rất nhiều phương pháp để làm điều đó. Chúng tôi sẽ khám phá tất cả chúng dưới đây.

  • Làm tròn vs cắt
  • Làm tròn lên
    • Làm tròn bằng cách sử dụng vòng []
    • Làm tròn bằng Math.ceil []
  • Làm tròn xuống
    • Làm tròn xuống bằng cách sử dụng vòng []
    • Làm tròn xuống bằng Math.Floor []
  • Vòng một nửa hoặc xuống
  • Làm tròn phao
  • Vòng thập phân
  • Tròn đến số nguyên gần nhất [5 hoặc 10]
  • Phân số tròn đến gần nhất
  • Số âm số âm
  • Vòng không có vòng [] [sử dụng divmod]
  • Vòng numpy mảng

Làm tròn vs cắt

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 tính toán trong khi duy trì độ chính xác ở một mức độ nào đó.

Trong khi đó, cắt ngắn loại bỏ các chữ số sau số lượng số 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 một sự khác biệt lớn khi có sự khác biệt nhỏ về giá trị. Một ví dụ về một thị trường chứng khoán làm rõ mọi thứ hơn nữa.

Sở 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 giảm các giá trị thành ba số thập phân nhiều lần mỗi ngày. Hãy xem xét các 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 cùng phá vỡ 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 mà chúng tôi đã bắt đầu một mảng các số ngẫu nhiên trong khoảng 0,01 đến 0,1 bằng Random.Uniform []. Đây là trong khoảng 500.000 giây.
  2. Tiếp theo, hàm cắt [num] lấy 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 các giá trị, và sau đó tính toán chênh lệch.
  4. Sau đó, chúng tôi sẽ sử dụng vòng [] 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 một 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 cắt ngắn thay vì vòng [], điều này có thể dẫn đến các vấn đề đáng kể.

Làm tròn lên

Làm tròn các 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 của công việc của bạn nhưng cũng làm cho tính toán đơn giản hơn. Trong Python, có hai cách để làm tròn số lượng:

Làm tròn bằng cách sử dụng vòng []

Làm tròn bằng Math.ceil []

Làm tròn xuống

Làm tròn xuống bằng cách sử dụng vòng []

Làm tròn xuống bằng Math.Floor []

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]

Vòng một nửa hoặc xuống

Làm tròn phao

Vòng thập phân

Làm tròn bằng Math.ceil []

Làm tròn xuống

Làm tròn xuống bằng cách sử dụng vòng []

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

Làm tròn xuống bằng Math.Floor []

Làm tròn xuống

Làm tròn xuống bằng cách sử dụng vòng []

Làm tròn xuống bằng cách sử dụng vòng []

Làm tròn xuống bằng Math.Floor []

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]

Vòng một nửa hoặc xuống

Làm tròn phao

Vòng thập phân

Làm tròn xuống bằng Math.Floor []

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 Sloor [] 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 sẽ nhận được 8. Hãy để xem xét mã bên dưới:

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

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

Vòng một nửa hoặc xuống

Cả hai làm tròn một nửa lên và xuống đề cập đến việc làm tròn một số được chỉ định đến chữ số gần nhất để đảm bảo độ chính xác 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 đã kết hợp một mã để xem làm thế nào một nửa công việc lên và xuống như thế nào:

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 chuyển điểm 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 điểm thập phân thay đổi.

Là lớn hơn 5, nhỏ hơn 5, hoặc bằng 5? Bước tiếp theo là thêm 0,5 và áp dụng chức năng sàn cho nửa vòng lên. Đối với một nửa xuống, bạn trừ 0,5 từ số và áp dụng hàm math.ceil [].

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

Làm tròn phao

Bây giờ bạn đã quen với hàm vòng [], bạn có thể dễ dàng sử dụng nó để làm tròn các giá trị nổi. Trước đây, chúng tôi đã bỏ ra đối số tùy chọn thứ hai để làm tròn lên 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 các giá trị float. Hãy cùng nhìn vào mã bên dưới:

[int[10*x-0.5]+1] / 10.0
0

Đầ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à đối số.

Vòng thập phân

Python cung cấp một mô -đun thập phân cho phép độ chính xác 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ố quan trọng, đưa ra một biểu diễn chính xác hơn về số thập phâ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ị tròn lớn hơn số
  2. Round_down: Các giá trị tròn di chuyển về phía 0
  3. Round_floor: Giá trị tròn nhỏ hơn số
  4. Round_half_down: Các giá trị tròn di chuyển nửa chừng tới 0
  5. Round_half_Even: Giá trị tròn di chuyển nửa chừng đến số chẵn gần nhất
  6. Round_half_up: Giá trị tròn di chuyển cách xa 0
  7. Round_up: Giá trị tròn di chuyển ra khỏi 0

Hãy cùng xem mã bên dưới để quan sát cách mỗi chức năng này hoạt động:

[int[10*x-0.5]+1] / 10.0
1

Đầu tiên, chúng tôi nhập mô -đun thập phân. Tiếp theo, chúng tôi gán một giá trị nổi cho biến tròn_num và sau đó làm tròn nó đến 2 vị trí và lưu trữ nó trong 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 toán tử DOT [.], Chúng tôi chỉ định giá trị được làm tròn.

Vì chúng tôi muốn làm tròn một số thập phân, chúng tôi khởi tạo Round_num như một số thập phân. Trong các dấu ngoặc của .quantize [], chúng tôi chỉ định các địa điểm 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.

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

Có thể có một 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 cùng 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ức là 5 hoặc 10. Ví dụ, trong 14, làm tròn đến số nguyên gần nhất là 5 sẽ cho bạn 15, trong khi, trong 10, Bạn cần 10.

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

[int[10*x-0.5]+1] / 10.0
2

 

Giá trị được làm tròn là N, trong khi cơ sở là 5 hoặc 10. Cơ sở có thể được đặt như bất kỳ số nào bạn muốn. Bước tiếp theo là chia giá trị với cơ sở và làm tròn kết quả để có được 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ách các số khác nhau được làm tròn với 5 hoặc 10 làm cơ sở của chúng.

Phân số tròn đến gần nhất

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

[int[10*x-0.5]+1] / 10.0
3

Đảm bảo bạn nhập phân số từ mô -đun phân số để sử dụng nó trong mã của bạn. Tiếp theo, chúng tôi 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, chúng tôi thực hiện làm tròn hai cách. Chúng tôi không chỉ định số lượng địa điểm chúng tôi muốn làm tròn phân số và gán giá trị cho vòng tròn biến đổi.

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 RoundedWithLimit. Cuối cùng, chúng tôi in kết quả trong ba cột, trong đó sự khác biệt giữa hai kết quả là rõ ràng.

Số âm số âm

Bây giờ, bạn đã học được về việc làm tròn các con số tích cực, việc xử lý các số âm đã giành được một vấn đề. Bạn có thể làm tròn các số âm theo ba cách:

Phương pháp đầu tiên là hàm tích hợp cơ bản có trong Python, tức là, Round []. Nó hoạt động cho các số nguyên tích cực và tiêu cực tương tự.

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

Mặt khác, nếu nó có ít hơn 0,5, vòng [] trả về số nguyên nhỏ hơn. Hãy nhớ rằng với 0,5, vòng [] 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 hàm math.ceil []. Lòng luôn được sử dụng để làm tròn các 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 trần nhà trả về điều đó. Do đó, đối với các giá trị âm, trần di chuyển xuống, trái ngược với hoạt động của nó cho các số dương.

Thứ ba, bạn có thể sử dụng hàm math.floor []. Nó luôn được sử dụng để làm tròn các giá trị xuống. Hãy cùng 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 đó math.floor [] sẽ trả về đ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ó cho các số dương.

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

[int[10*x-0.5]+1] / 10.0
4

Đầ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 tôi gán các 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 là cho số âm, đang được làm tròn. Ba cột khác là cho vòng [], math.ceil [], math.floor [] 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 các số âm được thảo luận ở trên.

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

DivMod [Num1, Num2] là một chức năng trong Python lấy cổ tức và chia cấp làm đối số và trả về một bộ điều khiển và phần còn lại. Chúng ta có thể sử dụng hoạt động của nó để làm tròn một số đến 5 hoặc 10. Chúng ta hãy xem mã sau:

[int[10*x-0.5]+1] / 10.0
5

Đầu tiên, chúng tôi đã xác định một hàm lấy số sẽ được làm tròn, tức là giá trị, như một đối số. Tiếp theo, chúng tôi áp dụng divmod [] về giá trị với ước số là 5.

Để làm tròn đến 10 gần nhất, hãy thay thế đố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. Nếu vậy, chúng tôi thêm 1 trong chỉ số, điều đó có nghĩa là chúng tôi đang làm tròn.

Cuối cùng, chúng tôi nhân số thương số với 5 để trả lại bội số 5 dưới dạng câu trả lời 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 105.0 dưới dạng câu trả lời, bội số gần nhất của 5.

Vòng numpy mảng

Các 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à điện toán khoa học. Đó là một chiến lược thực tế vì các tính năng vector hóa và phát sóng của nó.

Chúng cho phép các hàm đượ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. Hãy chắc chắn rằng bạn đã cài đặt Numpy trên hệ thống của mình để sử dụng các mảng Numpy.

Các mảng này có thể được làm tròn bằng các hàm vòng [] và xung quanh []. Hãy cùng xem mã sau:

[int[10*x-0.5]+1] / 10.0
6

Đầ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 tôi sẽ sử dụng các hàm vòng [] và xung quanh [] và vượt qua mảng và số lượng địa điểm chúng tôi muốn làm tròn chức năng đó.

Cuối cùng, chúng tôi in kết quả và bạn có thể quan sát rằng cả hai chức năng đều cho cùng một kết quả.

MOKHTAR là người sáng lập của likeGeeks.com. Anh ta làm việc như một Quản trị viên hệ thống Linux & NBSP; kể từ năm 2010. Anh ta chịu trách nhiệm duy trì, bảo vệ và xử lý sự cố các máy chủ Linux cho nhiều khách hàng trên thế giới. Anh ấy thích viết kịch bản Shell và Python để tự động hóa tác phẩm của mình.

Làm thế nào để bạn làm tròn mà không sử dụng chức năng tròn trong Python?

Để thực hiện chiến lược làm tròn lên trên các chiến lược của người Viking trong Python, chúng tôi sẽ sử dụng chức năng cle [] từ mô -đun toán học. Hàm CLE [] có tên từ thuật ngữ trần nhà, được sử dụng trong toán học để mô tả số nguyên gần nhất lớn hơn hoặc bằng một số nhất định.use the ceil[] function from the math module. The ceil[] function gets its name from the term “ceiling,” which is used in mathematics to describe the nearest integer that is greater than or equal to a given number.

Làm thế nào để bạn làm tròn mà không sử dụng vòng toán học?

Bạn có thể nhân số ban đầu với công suất 10 sao cho vị trí mong muốn để làm tròn nằm ở vị trí của đơn vị, áp dụng phương thức "Thêm một nửa và vòng" mà bạn đã có, sau đó chia cùng một công suất 10, vì vậy số kết quả làBây giờ trở lại quy mô ban đầu.multiply the original number by a power of 10 so that the desired place to round is in the unit's place, apply the "add half and round" method you already have, then divide the same power of 10, so the resulting number is now back to the original scale.

Làm thế nào để bạn buộc làm tròn trong Python?

Các phương thức CLE [] và MATH.FLOOR [] làm tròn và làm tròn một số cho toàn bộ số/số nguyên gần nhất.Hai phương pháp này là từ mô-đun toán học tích hợp trong Python. floor[] methods which rounds up and rounds down a number to the nearest whole number/integer respectively. These two methods are from the built-in math module in Python.

Làm thế nào để bạn làm tròn đến 2 chữ số thập phân ở Python?

Khoa học dữ liệu thực tế sử dụng hàm vòng [] của Python Python đòi hỏi hai đối số.Đầu tiên là số được làm tròn.Đối số thứ hai quyết định số lượng vị trí thập phân mà nó được làm tròn.Để làm tròn số đến 2 số thập phân, đưa ra đối số thứ hai là 2.give second argument as 2.

Bài Viết Liên Quan

Chủ Đề