Hướng dẫn python round towards zero - trăn tròn về phía 0

Đó là kỷ nguyên của dữ liệu lớn và mỗi ngày ngày càng có nhiều doanh nghiệp cố gắng tận dụng dữ liệu của họ để đưa ra quyết định sáng suốt. Nhiều doanh nghiệp đang chuyển sang hệ sinh thái khoa học dữ liệu mạnh mẽ của Python, để phân tích dữ liệu của họ, bằng chứng là sự phổ biến ngày càng tăng của Python trong lĩnh vực khoa học dữ liệu.

Nội dung chính Show

  • Chức năng vòng () Python tích hợp ()
  • Bao nhiêu tác động có thể làm tròn có?
  • Bây giờ, hãy để Lôi chạy mô phỏng trong 1.000.000 giây (khoảng 11,5 ngày). Đối với mỗi giây, tạo một giá trị ngẫu nhiên giữa >>> actual_value, truncated_value = 100, 100 10 và >>> actual_value, truncated_value = 100, 100 11 với hàm >>> actual_value, truncated_value = 100, 100 12 trong mô -đun >>> actual_value, truncated_value = 100, 100 13, sau đó cập nhật >>> actual_value, truncated_value = 100, 100 14 và >>> actual_value, truncated_value = 100, 100 15:
  • Ở mỗi bước của vòng lặp, một số ngẫu nhiên mới giữa >>> actual_value, truncated_value = 100, 100 10 và >>> actual_value, truncated_value = 100, 100 11 được tạo bằng cách sử dụng >>> actual_value, truncated_value = 100, 100 24 và được gán cho biến >>> actual_value, truncated_value = 100, 100 25. Giá trị mới của khoản đầu tư của bạn được tính bằng cách thêm >>> actual_value, truncated_value = 100, 100 25 vào >>> actual_value, truncated_value = 100, 100 27 và tổng số bị cắt được tính bằng cách thêm >>> actual_value, truncated_value = 100, 100 25 vào >>> actual_value, truncated_value = 100, 100 29 và sau đó cắt giảm giá trị này với >>> actual_value, truncated_value = 100, 100 01.
  • Hãy cùng xem từng phương pháp làm tròn này một cách riêng lẻ, bắt đầu bằng cách làm tròn.
  • Làm tròn luôn làm tròn một số vào bên phải trên dòng số và làm tròn xuống luôn làm tròn một số vào bên trái trên dòng số.
  • Bạn có thể kiểm tra >>> actual_value, truncated_value = 100, 100 95 trên một vài giá trị khác nhau:
  • Làm tròn một nửa lên
  • Vâng, đó là sai! Nhưng nó giải thích tại sao >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 76 trả về -1,23. Hãy để tiếp tục các bước từng bước >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 60, sử dụng >>> actual_value, truncated_value = 100, 100 21 trong bản phát hành để nhớ lại đầu ra giá trị cuối cùng ở mỗi bước:
  • Tiếp theo, tính toán giá trị trung bình trên dữ liệu sau khi làm tròn đến một vị trí thập phân với >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 60 và >>> random.seed(100) >>> actual_value, rounded_value = 100, 100 >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... rounded_value = round(rounded_value + randn, 3) ... >>> actual_value 96.45273913513529 >>> rounded_value 96.258 06:
  • Giá trị trung bình của các số trong >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 20 được bảo tồn gần như chính xác khi bạn làm tròn từng số trong >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 20 đến một vị trí thập phân với >>> random.seed(100) >>> actual_value, rounded_value = 100, 100 >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... rounded_value = round(rounded_value + randn, 3) ... >>> actual_value 96.45273913513529 >>> rounded_value 96.258 45!
  • Bạn không nên quan tâm đến những lỗi không thường xuyên này nếu độ chính xác điểm nổi là đủ cho ứng dụng của bạn.
  • Chiến lược def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 22 làm tròn các số về 0, giống như hàm >>> actual_value, truncated_value = 100, 100 01. Mặt khác, def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 23 làm tròn mọi thứ từ số không. Đây là một sự phá vỡ rõ ràng từ thuật ngữ mà chúng tôi đã đồng ý trước đó trong bài viết, vì vậy hãy ghi nhớ điều đó khi bạn đang làm việc với mô -đun >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 98.
  • Trên thực tế, tiêu chuẩn IEEE-754 yêu cầu thực hiện cả số 0 dương và âm. Những gì có thể sử dụng là có một cái gì đó như thế này? Wikipedia biết câu trả lời:
  • Thư viện Pandas đã trở thành một yếu tố chính cho các nhà khoa học dữ liệu và các nhà phân tích dữ liệu làm việc trong Python. Theo lời của Joe Wyndham thực sự của Python:
  • Hai cấu trúc dữ liệu gấu trúc chính là def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 98, theo thuật ngữ rất lỏng lẻo hoạt động giống như bảng tính Excel và def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 99, mà bạn có thể nghĩ như một cột trong bảng tính. Cả hai đối tượng def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 99 và def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 98 cũng có thể được làm tròn hiệu quả bằng các phương pháp >>> truncate(12.5) 12.0 >>> truncate(-5.963, 1) -5.9 >>> truncate(1.625, 2) 1.62 02 và >>> truncate(12.5) 12.0 >>> truncate(-5.963, 1) -5.9 >>> truncate(1.625, 2) 1.62 03:
  • Tuân thủ các quy định nội tệ
  • Khi nghi ngờ, các mối quan hệ tròn để thậm chí
  • Bản tóm tắt
  • Tài nguyên bổ sung

Nội phân Chính showShowShow

  • Chức năng vòng () Python tích hợp ()
  • Bao nhiêu tác động có thể làm tròn có?
  • Một người đàn ông của các phương pháp
  • Tập trung
  • Làm tròn xuống
  • Interlude: Bias làm tròn
  • Làm tròn một nửa lên
  • Làm tròn một nửa xuống
  • Làm tròn một nửa so với số không
  • Làm tròn một nửa để thậm chí
  • Lớp thập phân
  • Làm tròn mảng numpy
  • Sê -ri Gấu trúc tròn và DataFrame
  • Các ứng dụng và thực tiễn tốt nhất
  • Lưu trữ nhiều hơn và tròn muộn
  • Tuân thủ các quy định nội tệ
  • Khi nghi ngờ, các mối quan hệ tròn để thậm chí
  • Tài nguyên bổ sung

Nội phân Chính showShow

Chức năng vòng () Python tích hợp ()

Bao nhiêu tác động có thể làm tròn có?

  • Một người đàn ông của các phương pháp
  • Tập trung
  • Làm tròn xuống
  • Interlude: Bias làm tròn
  • Làm tròn một nửa lên

Làm tròn một nửa xuống

Làm tròn một nửa so với số không

Chức năng vòng () Python tích hợp ()

Bao nhiêu tác động có thể làm tròn có?

Một người đàn ông của các phương pháp

Tập trung

Làm tròn xuống

Interlude: Bias làm tròn

Làm tròn một nửa lên

Làm tròn một nửa xuống

Làm tròn một nửa so với số không

Làm tròn một nửa để thậm chí

Lớp thập phân

Làm tròn mảng numpy

Sê -ri Gấu trúc tròn và DataFrame

Các ứng dụng và thực tiễn tốt nhất

Gasp!

Lưu trữ nhiều hơn và tròn muộn

Một điều mà mọi người thực hành khoa học dữ liệu phải ghi nhớ là làm thế nào một bộ dữ liệu có thể bị sai lệch. Rút ra kết luận từ dữ liệu thiên vị có thể dẫn đến những sai lầm tốn kém.

Có nhiều cách thiên vị có thể leo vào một bộ dữ liệu. Nếu bạn đã nghiên cứu một số số liệu thống kê, bạn có thể quen thuộc với các thuật ngữ như báo cáo sai lệch, sai lệch lựa chọn và thiên vị lấy mẫu. Có một loại thiên vị khác đóng vai trò quan trọng khi bạn đang xử lý dữ liệu số: Xu hướng làm tròn.

Trong bài viết này, bạn sẽ học:

Tại sao cách bạn số tròn lại quan trọng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 87 được cho là sẽ trả lại >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84. Có một lý do chính đáng tại sao >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 hành xử theo cách nó làm.

Trong bài viết này, bạn sẽ học được rằng có nhiều cách để làm tròn một con số hơn bạn có thể mong đợi, mỗi cách có những ưu điểm và nhược điểm độc đáo.

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 hành xử theo một chiến lược làm tròn cụ thể mà có thể hoặc không phải là một trong những tình huống bạn cần cho một tình huống nhất định.

Bạn có thể tự hỏi, có thể cách mà tôi có thể có những con số thực sự có nhiều tác động? Hãy cùng xem xét về việc các tác động của làm tròn có thể đến mức nào.

Bao nhiêu tác động có thể làm tròn có?

Giả sử bạn có một ngày vô cùng may mắn và tìm thấy 100 đô la trên mặt đất. Thay vì chi tiêu tất cả tiền của bạn cùng một lúc, bạn quyết định chơi thông minh và đầu tư tiền của bạn bằng cách mua một số cổ phiếu của các cổ phiếu khác nhau.

Giá trị của một cổ phiếu phụ thuộc vào cung và cầu. Càng nhiều người muốn mua một cổ phiếu, càng có nhiều giá trị mà cổ phiếu có và ngược lại. Trong thị trường chứng khoán khối lượng lớn, giá trị của một cổ phiếu cụ thể có thể dao động trên cơ sở thứ hai.

Hãy để chạy một thí nghiệm nhỏ. Chúng tôi sẽ giả vờ giá trị tổng thể của các cổ phiếu bạn đã mua dao động theo một số ngẫu nhiên nhỏ mỗi giây, giả sử từ 0,05 đến -0,05 đô la. Biến động này có thể không nhất thiết là một giá trị tốt đẹp chỉ với hai vị trí thập phân. Ví dụ: giá trị tổng thể có thể tăng thêm 0,031286 một giây và giảm giây tiếp theo bằng 0,028476.

Bạn không muốn theo dõi giá trị của mình đến vị trí thập phân thứ năm hoặc thứ sáu, vì vậy bạn quyết định cắt giảm mọi thứ sau vị trí thập phân thứ ba. Trong biệt ngữ làm tròn, điều này được gọi là cắt số đến vị trí thập phân thứ ba. Có một số lỗi được mong đợi ở đây, nhưng bằng cách giữ ba vị trí thập phân, lỗi này không thể là đáng kể. Đúng?truncating the number to the third decimal place. There’s some error to be expected here, but by keeping three decimal places, this error couldn’t be substantial. Right?truncating the number to the third decimal place. There’s some error to be expected here, but by keeping three decimal places, this error couldn’t be substantial. Right?

Để chạy thử nghiệm của chúng tôi bằng Python, hãy để bắt đầu bằng cách viết hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 cắt ngắn một số xuống còn ba số thập phân:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 9

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động bằng cách đầu tiên chuyển điểm thập phân trong số >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 ba vị trí bên phải bằng cách nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805. Phần số nguyên của số mới này được thực hiện với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 806. Cuối cùng, điểm thập phân được thay đổi ba vị trí sang trái bằng cách chia >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 cho >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805.

Tiếp theo, hãy để xác định các tham số ban đầu của mô phỏng. Bạn sẽ cần hai biến: một để theo dõi giá trị thực tế của cổ phiếu của bạn sau khi mô phỏng hoàn tất và một biến cho giá trị của cổ phiếu của bạn sau khi bạn đã cắt giảm ba vị trí thập phân ở mỗi bước.

Bắt đầu bằng cách khởi tạo các biến này thành

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 809:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 8

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động bằng cách đầu tiên chuyển điểm thập phân trong số >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 ba vị trí bên phải bằng cách nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805. Phần số nguyên của số mới này được thực hiện với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 806. Cuối cùng, điểm thập phân được thay đổi ba vị trí sang trái bằng cách chia >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 cho >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 6

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động bằng cách đầu tiên chuyển điểm thập phân trong số >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 ba vị trí bên phải bằng cách nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805. Phần số nguyên của số mới này được thực hiện với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 806. Cuối cùng, điểm thập phân được thay đổi ba vị trí sang trái bằng cách chia >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 cho >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805.

Tiếp theo, hãy để xác định các tham số ban đầu của mô phỏng. Bạn sẽ cần hai biến: một để theo dõi giá trị thực tế của cổ phiếu của bạn sau khi mô phỏng hoàn tất và một biến cho giá trị của cổ phiếu của bạn sau khi bạn đã cắt giảm ba vị trí thập phân ở mỗi bước.

Bắt đầu bằng cách khởi tạo các biến này thành

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 809:

Bây giờ, hãy để Lôi chạy mô phỏng trong 1.000.000 giây (khoảng 11,5 ngày). Đối với mỗi giây, tạo một giá trị ngẫu nhiên giữa

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 810 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 811 với hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 812 trong mô -đun >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 813, sau đó cập nhật >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 814 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 815:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 1

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động bằng cách đầu tiên chuyển điểm thập phân trong số >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 ba vị trí bên phải bằng cách nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805. Phần số nguyên của số mới này được thực hiện với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 806. Cuối cùng, điểm thập phân được thay đổi ba vị trí sang trái bằng cách chia >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 cho >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 805.

Tiếp theo, hãy để xác định các tham số ban đầu của mô phỏng. Bạn sẽ cần hai biến: một để theo dõi giá trị thực tế của cổ phiếu của bạn sau khi mô phỏng hoàn tất và một biến cho giá trị của cổ phiếu của bạn sau khi bạn đã cắt giảm ba vị trí thập phân ở mỗi bước.

Bắt đầu bằng cách khởi tạo các biến này thành

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 809:

Bây giờ, hãy để Lôi chạy mô phỏng trong 1.000.000 giây (khoảng 11,5 ngày). Đối với mỗi giây, tạo một giá trị ngẫu nhiên giữa >>> actual_value, truncated_value = 100, 100 10 và >>> actual_value, truncated_value = 100, 100 11 với hàm >>> actual_value, truncated_value = 100, 100 12 trong mô -đun >>> actual_value, truncated_value = 100, 100 13, sau đó cập nhật >>> actual_value, truncated_value = 100, 100 14 và >>> actual_value, truncated_value = 100, 100 15:

Thịt mô phỏng diễn ra trong vòng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 816, lặp lại trên >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 817 của các số từ >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 819. Giá trị được lấy từ >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 820 ở mỗi bước được lưu trữ trong biến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 821 mà chúng tôi sử dụng ở đây vì chúng tôi thực sự cần giá trị này bên trong vòng lặp.

Ở mỗi bước của vòng lặp, một số ngẫu nhiên mới giữa >>> actual_value, truncated_value = 100, 100 10 và >>> actual_value, truncated_value = 100, 100 11 được tạo bằng cách sử dụng >>> actual_value, truncated_value = 100, 100 24 và được gán cho biến >>> actual_value, truncated_value = 100, 100 25. Giá trị mới của khoản đầu tư của bạn được tính bằng cách thêm >>> actual_value, truncated_value = 100, 100 25 vào >>> actual_value, truncated_value = 100, 100 27 và tổng số bị cắt được tính bằng cách thêm >>> actual_value, truncated_value = 100, 100 25 vào >>> actual_value, truncated_value = 100, 100 29 và sau đó cắt giảm giá trị này với >>> actual_value, truncated_value = 100, 100 01.

Như bạn có thể thấy bằng cách kiểm tra biến

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 827 sau khi chạy vòng lặp, bạn chỉ mất khoảng 3,55 đô la. Tuy nhiên, nếu bạn đã nhìn vào >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 829, bạn đã nghĩ rằng bạn đã mất gần như tất cả số tiền của mình! Bỏ qua thời điểm mà >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 3 không hành xử như bạn mong đợi, hãy để Lôi thử chạy lại mô phỏng. Chúng tôi sẽ sử dụng >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 3 lần này để làm tròn đến ba vị trí thập phân ở mỗi bước và >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 835 Mô phỏng một lần nữa để có được kết quả tương tự như trước đây:Thật la khac biệt!Có vẻ như gây sốc, lỗi chính xác này đã gây ra sự khuấy động vào đầu những năm 1980 khi hệ thống được thiết kế để ghi lại giá trị của Sở giao dịch chứng khoán Vancouver đã cắt giảm giá trị chỉ số tổng thể thành ba vị trí thập phân thay vì làm tròn. Lỗi làm tròn đã gây ảnh hưởng đến các cuộc bầu cử và thậm chí dẫn đến việc mất mạng.
12.345 Làm thế nào bạn có số tròn là quan trọng, và là một nhà phát triển và thiết kế phần mềm có trách nhiệm, bạn cần biết những vấn đề phổ biến là gì và làm thế nào để đối phó với chúng. Hãy để lặn và điều tra các phương pháp làm tròn khác nhau là gì và làm thế nào bạn có thể thực hiện từng phương pháp trong Python thuần túy. 10
12.345 Một người đàn ông của các phương pháp 12
12.345 Có rất nhiều chiến lược làm tròn, mỗi chiến lược đều có ưu điểm và nhược điểm. Trong phần này, bạn sẽ tìm hiểu về một số kỹ thuật phổ biến nhất và cách chúng có thể ảnh hưởng đến dữ liệu của bạn. 12.3
12.345 Cắt ngắn 12.34

Phương pháp đơn giản nhất, mặc dù nhất định, để làm tròn một số là cắt số số thành một số chữ số nhất định. Khi bạn cắt một số, bạn thay thế từng chữ số sau một vị trí nhất định bằng 0. Dưới đây là một số ví dụ:

  • Giá trị
  • Cắt ngắn để
  • Kết quả

Hàng chục nơi

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 1

Những người

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động tốt cho cả số dương và số âm:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3

Bạn thậm chí có thể chuyển một số âm cho

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 846 để cắt ngắn thành các chữ số ở bên trái của dấu thập phân:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0

Bạn thậm chí có thể chuyển một số âm cho

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 846 để cắt ngắn thành các chữ số ở bên trái của dấu thập phân:

Khi bạn cắt ngắn một số dương, bạn đang làm tròn nó xuống. Tương tự như vậy, cắt ngắn một số âm tròn số đó lên. Theo một nghĩa nào đó, cắt ngắn là sự kết hợp của các phương pháp làm tròn tùy thuộc vào dấu hiệu của số bạn đang làm tròn.

Hãy cùng xem từng phương pháp làm tròn này một cách riêng lẻ, bắt đầu bằng cách làm tròn.

Tập trung

Chiến lược làm tròn thứ hai mà chúng tôi sẽ xem xét được gọi là làm tròn. Chiến lược này luôn làm tròn một số lên đến một số chữ số cụ thể. Bảng sau đây tóm tắt chiến lược này:Giá trịCắt ngắn để
12.345 Kết quả20
12.345 Hàng chục nơi13
12.345 Những người12.4
12.345 Hàm 12.35

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động tốt cho cả số dương và số âm:

>>>

Bạn thậm chí có thể chuyển một số âm cho

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 hoạt động tốt cho cả số dương và số âm:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 850 nằm trong khoảng thời gian giữa >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 851 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84. Trần trần của người Viking là lớn hơn trong hai điểm cuối của khoảng thời gian. Ít hơn trong hai điểm cuối được gọi là sàn nhà. Do đó, trần của >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 850 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84 và sàn >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 850 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 851.ceiling function maps every number to its ceiling. To allow the ceiling function to accept integers, the ceiling of an integer is defined to be the integer itself. So the ceiling of the number >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84 is >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84.ceiling function maps every number to its ceiling. To allow the ceiling function to accept integers, the ceiling of an integer is defined to be the integer itself. So the ceiling of the number >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84 is >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84.

Trong toán học, một chức năng đặc biệt gọi là hàm trần ánh xạ mỗi số lên trần nhà của nó. Để cho phép hàm trần chấp nhận số nguyên, trần của một số nguyên được xác định là chính số nguyên. Vì vậy, trần của số

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84.

>>>

>>> import math >>> math.ceil(1.2) 2 >>> math.ceil(2) 2 >>> math.ceil(-0.5) 0

Trong Python,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859 thực hiện hàm trần và luôn trả về số nguyên gần nhất lớn hơn hoặc bằng đầu vào của nó:

Lưu ý rằng trần của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818, không phải >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862. Điều này có ý nghĩa bởi vì >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818 là số nguyên gần nhất đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860 lớn hơn hoặc bằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860.>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 1

Hãy cùng viết một chức năng gọi là

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 thực hiện chiến lược làm tròn lên trên mạng:

Bạn có thể nhận thấy rằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 trông rất giống >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801. Đầu tiên, điểm thập phân trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 được dịch chuyển đúng số vị trí sang phải bằng cách nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 871. Giá trị mới này được làm tròn lên đến số nguyên gần nhất bằng cách sử dụng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859, và sau đó điểm thập phân được chuyển trở lại bên trái bằng cách chia cho >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 871.

Mô hình này thay đổi điểm thập phân, áp dụng một số phương pháp làm tròn để làm tròn sang số nguyên, và sau đó chuyển điểm thập phân trở lại sẽ đi lại nhiều lần khi chúng tôi điều tra các phương pháp làm tròn nhiều hơn. Rốt cuộc, đây là thuật toán tinh thần mà con người chúng ta sử dụng cho các số tròn bằng tay.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 8

Trong Python,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859 thực hiện hàm trần và luôn trả về số nguyên gần nhất lớn hơn hoặc bằng đầu vào của nó:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 80

Trong Python,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859 thực hiện hàm trần và luôn trả về số nguyên gần nhất lớn hơn hoặc bằng đầu vào của nó:

Lưu ý rằng trần của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818, không phải >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862. Điều này có ý nghĩa bởi vì >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818 là số nguyên gần nhất đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860 lớn hơn hoặc bằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860.>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 1

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 81

Trong Python,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859 thực hiện hàm trần và luôn trả về số nguyên gần nhất lớn hơn hoặc bằng đầu vào của nó:

Lưu ý rằng trần của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818, không phải >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862. Điều này có ý nghĩa bởi vì >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818 là số nguyên gần nhất đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860 lớn hơn hoặc bằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 860.>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 1

Hãy cùng viết một chức năng gọi là

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 thực hiện chiến lược làm tròn lên trên mạng:

Bạn có thể nhận thấy rằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 trông rất giống >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801. Đầu tiên, điểm thập phân trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 được dịch chuyển đúng số vị trí sang phải bằng cách nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 871. Giá trị mới này được làm tròn lên đến số nguyên gần nhất bằng cách sử dụng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859, và sau đó điểm thập phân được chuyển trở lại bên trái bằng cách chia cho >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 871.

Mô hình này thay đổi điểm thập phân, áp dụng một số phương pháp làm tròn để làm tròn sang số nguyên, và sau đó chuyển điểm thập phân trở lại sẽ đi lại nhiều lần khi chúng tôi điều tra các phương pháp làm tròn nhiều hơn. Rốt cuộc, đây là thuật toán tinh thần mà con người chúng ta sử dụng cho các số tròn bằng tay.

Hãy cùng xem xét

>>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 866 hoạt động tốt như thế nào cho các đầu vào khác nhau:Giống như >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 801, bạn có thể chuyển giá trị âm cho >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 846:
12.345 Khi bạn chuyển một số âm cho 10
12.345 >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 846, số trong đối số đầu tiên của >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 được làm tròn đến số chữ số chính xác ở bên trái của dấu thập phân.12
12.345 Hãy đoán xem những gì 12.3
12.345 >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 879 trả về:12.34

Có phải

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 880 những gì bạn mong đợi?

Nếu bạn kiểm tra logic được sử dụng trong việc xác định ____ ____ 166, cụ thể, cách hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859 hoạt động thì điều đó có ý nghĩa rằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 879 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 880. Tuy nhiên, một số người tự nhiên mong đợi tính đối xứng xung quanh số 0 khi làm tròn các số, do đó nếu >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 81 được làm tròn lên đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84, thì >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 887 sẽ được làm tròn lên đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 888.

Hãy để thiết lập một số thuật ngữ. Đối với các mục đích của chúng tôi, chúng tôi sẽ sử dụng các thuật ngữ làm tròn lên và các vòng tròn xuống theo sơ đồ sau:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 82

Làm tròn lên bên phải và xuống bên trái. (Hình ảnh: David Amos)

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895:>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 83

Làm tròn luôn làm tròn một số vào bên phải trên dòng số và làm tròn xuống luôn làm tròn một số vào bên trái trên dòng số.

Làm tròn xuống

Chiến lược làm tròn thứ hai mà chúng tôi sẽ xem xét được gọi là làm tròn. Chiến lược này luôn làm tròn một số lên đến một số chữ số cụ thể. Bảng sau đây tóm tắt chiến lược này:

Giá trị

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84

Làm tròn lên bên phải và xuống bên trái. (Hình ảnh: David Amos)

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895:

Làm tròn luôn làm tròn một số vào bên phải trên dòng số và làm tròn xuống luôn làm tròn một số vào bên trái trên dòng số.

Làm tròn xuống

Chiến lược làm tròn thứ hai mà chúng tôi sẽ xem xét được gọi là làm tròn. Chiến lược này luôn làm tròn một số lên đến một số chữ số cụ thể. Bảng sau đây tóm tắt chiến lược này:

Giá trị

Làm tròn lên đến

Kết quả

Interlude: Bias làm tròn

Bây giờ bạn đã thấy ba phương pháp làm tròn:

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895. Tất cả ba kỹ thuật này đều khá thô khi bảo tồn một lượng chính xác hợp lý cho một số nhất định.

Có một sự khác biệt quan trọng giữa

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 làm nổi bật một khía cạnh quan trọng của làm tròn: đối xứng xung quanh 0.rounding bias, which describes how rounding affects numeric data in a dataset.rounding bias, which describes how rounding affects numeric data in a dataset.

Hãy nhớ lại rằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 isn đối xứng xung quanh số không. Theo thuật ngữ toán học, một hàm f (x) đối xứng xung quanh 0 nếu, đối với bất kỳ giá trị nào của x, f (x) + f (-x) = 0. Ví dụ, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 609 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84, nhưng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 879 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862. Hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 cũng không đối xứng khoảng 0.round towards positive infinity bias, because the value is always rounded up in the direction of positive infinity. Likewise, the “rounding down” strategy has a round towards negative infinity bias.round towards positive infinity bias, because the value is always rounded up in the direction of positive infinity. Likewise, the “rounding down” strategy has a round towards negative infinity bias.

Mặt khác, hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 là đối xứng xung quanh 0. Điều này là do, sau khi chuyển điểm thập phân sang phải, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801 cắt các chữ số còn lại. Khi giá trị ban đầu là dương, số tiền này sẽ làm tròn số xuống. Số âm được làm tròn lên. Vì vậy, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 616 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 851 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 618 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862.round towards zero bias, in general.round towards zero bias, in general.

Khái niệm đối xứng giới thiệu khái niệm về độ lệch làm tròn, mô tả cách làm tròn ảnh hưởng đến dữ liệu số trong bộ dữ liệu.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 85

Ở đây, định nghĩa của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 86

Ở đây, định nghĩa của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 87

Ở đây, định nghĩa của

Trông giống như

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866, ngoại trừ >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 859 đã được thay thế bằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 898.

Bạn có thể kiểm tra

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 trên một vài giá trị khác nhau:

Những ảnh hưởng của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 có thể khá cực đoan. Bằng cách làm tròn các số trong một bộ dữ liệu lớn lên hoặc xuống, bạn có khả năng loại bỏ một tấn độ chính xác và thay đổi mạnh mẽ các tính toán được tạo từ dữ liệu.

Interlude: Bias làm tròn

Bây giờ bạn đã thấy ba phương pháp làm tròn:

Trước khi chúng tôi thảo luận về bất kỳ chiến lược làm tròn nào nữa, hãy để dừng lại và dành một chút thời gian để nói về cách làm tròn có thể làm cho dữ liệu của bạn bị sai lệch.tie with respect to >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 850 and >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 638. In cases like this, you must assign a tiebreaker.

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 801, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895. Tất cả ba kỹ thuật này đều khá thô khi bảo tồn một lượng chính xác hợp lý cho một số nhất định.tie with respect to >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 850 and >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 638. In cases like this, you must assign a tiebreaker.

Cách mà hầu hết mọi người được dạy về mối quan hệ phá vỡ là bằng cách làm tròn đến các số lớn hơn của hai con số có thể.

Làm tròn một nửa lên

Chiến lược làm tròn một nửa của người Viking lên từng số vào số gần nhất với độ chính xác được chỉ định và phá vỡ các mối quan hệ bằng cách làm tròn. Dưới đây là một số ví dụ:Giá trịVòng một nửa lên đến
13.825 Kết quả10
13.825 Hàng chục nơi 14
13.825 Những người 13.8
13.825 Vị trí thứ mười 13.83

Vị trí hàng trăm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 653.

Để thực hiện chiến lược nửa vòng tròn của người Viking trong Python, bạn bắt đầu như thường lệ bằng cách chuyển điểm thập phân sang bên phải bởi số lượng địa điểm mong muốn. Tuy nhiên, tại thời điểm này, bạn cần một cách để xác định xem chữ số ngay sau điểm thập phân thay đổi nhỏ hơn hoặc lớn hơn hoặc bằng

Một cách để làm điều này là thêm
  • >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 654 vào giá trị đã thay đổi và sau đó làm tròn với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 898. Điều này hoạt động bởi vì:

    Nếu chữ số ở vị trí thập phân đầu tiên của giá trị thay đổi nhỏ hơn năm, thì việc thêm
  • >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 654 won Thay đổi phần số nguyên của giá trị dịch chuyển, do đó sàn bằng phần nguyên.

    Nếu chữ số đầu tiên sau vị trí thập phân lớn hơn hoặc bằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 653, thì việc thêm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 654 sẽ tăng phần số nguyên của giá trị dịch chuyển bằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 851, do đó, sàn bằng với số nguyên lớn hơn này.

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 88

Ở đây, những gì nó trông giống như trong Python:

Lưu ý rằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 trông rất giống >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895. Điều này có thể có phần phản trực giác, nhưng bên trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 chỉ làm tròn. Bí quyết là thêm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 654 sau khi chuyển điểm thập phân để kết quả làm tròn xuống phù hợp với giá trị dự kiến.

Hãy để thử nghiệm

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 89

Ở đây, định nghĩa của

Trông giống như

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 60

Ở đây, định nghĩa của

Trông giống như

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 61

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 luôn phá vỡ các mối quan hệ bằng cách làm tròn đến các giá trị lớn hơn của hai giá trị có thể, các giá trị âm như >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 887 tròn đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862, không phải là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 888:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 62

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 luôn phá vỡ các mối quan hệ bằng cách làm tròn đến các giá trị lớn hơn của hai giá trị có thể, các giá trị âm như >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 887 tròn đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862, không phải là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 888:

Tuyệt quá! Bây giờ bạn cuối cùng có thể nhận được kết quả đó rằng chức năng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 tích hợp từ chối cho bạn:

Mặc dù trước khi bạn quá phấn khích, hãy để Lừa xem điều gì sẽ xảy ra khi bạn cố gắng và làm tròn

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 670 đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84 Số thập phân:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 63

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 luôn phá vỡ các mối quan hệ bằng cách làm tròn đến các giá trị lớn hơn của hai giá trị có thể, các giá trị âm như >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 887 tròn đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862, không phải là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 888:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 64

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 luôn phá vỡ các mối quan hệ bằng cách làm tròn đến các giá trị lớn hơn của hai giá trị có thể, các giá trị âm như >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 887 tròn đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 862, không phải là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 888:

Tuyệt quá! Bây giờ bạn cuối cùng có thể nhận được kết quả đó rằng chức năng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 tích hợp từ chối cho bạn:

Mặc dù trước khi bạn quá phấn khích, hãy để Lừa xem điều gì sẽ xảy ra khi bạn cố gắng và làm tròn

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 670 đến >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84 Số thập phân:

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 tích hợp từ chối cho bạn:should not be used in situations where precision is paramount. For applications where the exact precision is necessary, you can use the >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 697 class from Python’s >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 module. You’ll learn more about the >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 697 class below.

Chờ đợi. Chúng tôi vừa thảo luận về cách các mối quan hệ được làm tròn đến các giá trị lớn hơn của hai giá trị có thể.

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 670 bị đập vào giữa >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 673 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 674. Vì >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 673 là lớn hơn của hai người này, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 676 sẽ trả lại >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 673. Nhưng thay vào đó, chúng tôi có >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 674.should not be used in situations where precision is paramount. For applications where the exact precision is necessary, you can use the >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 697 class from Python’s >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 module. You’ll learn more about the >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 697 class below.

Có lỗi trong hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 không?

Khi

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 vòng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 670 đến hai số thập phân, điều đầu tiên nó làm là nhân >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 670 với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 809. Hãy để đảm bảo rằng điều này hoạt động như mong đợi:

Vâng, đó là sai! Nhưng nó giải thích tại sao >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 76 trả về -1,23. Hãy để tiếp tục các bước từng bước >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 60, sử dụng >>> actual_value, truncated_value = 100, 100 21 trong bản phát hành để nhớ lại đầu ra giá trị cuối cùng ở mỗi bước:Mặc dù >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 687 thực sự gần với >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 688, số nguyên gần nhất nhỏ hơn hoặc bằng với nó là >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 689. Khi điểm thập phân được chuyển trở lại bên trái, giá trị cuối cùng là >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 674. Giá trị
13.825 Chà, bây giờ bạn biết làm thế nào >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 676 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 674 mặc dù không có lỗi logic, nhưng tại sao Python nói rằng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 693 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 694? Có lỗi trong Python không?10
13.825 Kết quả14
13.825 Hàng chục nơi 13.8
13.825 Những người 13.82

Vị trí thứ mười

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 653.>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 65

Vị trí hàng trăm

Để thực hiện chiến lược nửa vòng tròn của người Viking trong Python, bạn bắt đầu như thường lệ bằng cách chuyển điểm thập phân sang bên phải bởi số lượng địa điểm mong muốn. Tuy nhiên, tại thời điểm này, bạn cần một cách để xác định xem chữ số ngay sau điểm thập phân thay đổi nhỏ hơn hoặc lớn hơn hoặc bằng

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 66

Hãy để kiểm tra

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106 so với một vài trường hợp thử nghiệm:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 67

Hãy để kiểm tra

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106 so với một vài trường hợp thử nghiệm:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 68

Hãy để kiểm tra

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106 so với một vài trường hợp thử nghiệm:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 69

Hãy để kiểm tra

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106 so với một vài trường hợp thử nghiệm:

Hãy để tính toán giá trị trung bình của các số sau:

Tiếp theo, tính toán giá trị trung bình trên dữ liệu sau khi làm tròn đến một vị trí thập phân với >>> import random >>> random.seed(100) >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... truncated_value = truncate(truncated_value + randn) ... >>> actual_value 96.45273913513529 >>> truncated_value 0.239 60 và >>> random.seed(100) >>> actual_value, rounded_value = 100, 100 >>> for _ in range(1000000): ... randn = random.uniform(-0.05, 0.05) ... actual_value = actual_value + randn ... rounded_value = round(rounded_value + randn, 3) ... >>> actual_value 96.45273913513529 >>> rounded_value 96.258 06:

Mỗi số trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 là một sự ràng buộc liên quan đến việc làm tròn đến một vị trí thập phân. Hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 giới thiệu một vòng hướng tới sai lệch vô cực dương và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106 giới thiệu một vòng hướng tới sai lệch vô cực tiêu cực.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 10

Các chiến lược làm tròn còn lại mà chúng tôi sẽ thảo luận về tất cả các nỗ lực để giảm thiểu những thành kiến ​​này theo những cách khác nhau.

Làm tròn một nửa so với số khôngNếu bạn kiểm tra chặt chẽ >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 660 và >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 106, bạn sẽ nhận thấy rằng cả hai chức năng này đều không đối xứng xung quanh 0:Một cách để giới thiệu đối xứng là luôn luôn làm tròn một chiếc cà vạt từ số không. Bảng sau đây minh họa cách thức hoạt động của nó:
15.25 Giá trị 20
15.25 Vòng một nửa từ số không đến 15
15.25 Kết quả 15.3
-15.25 Giá trị -20
-15.25 Vòng một nửa từ số không đến -15
-15.25 Kết quả -15.3

Hàng chục nơi

  1. Những người
  2. Vị trí thứ mười
  3. Để thực hiện một nửa vòng tròn từ chiến lược số 0 trên một số >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4, bạn bắt đầu như bình thường bằng cách chuyển điểm thập phân sang đúng một số vị trí nhất định. Sau đó, bạn nhìn vào chữ số >>> import math >>> math.ceil(1.2) 2 >>> math.ceil(2) 2 >>> math.ceil(-0.5) 0 7 ngay bên phải vị trí thập phân trong số mới này. Tại thời điểm này, có bốn trường hợp cần xem xét:
  4. Nếu >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 là dương và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 119, hãy làm tròn

Nếu

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 là dương và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121, hãy làm tròn xuống

Nếu

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 là dương và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121, hãy làm tròn xuống

Nếu

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 là dương và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121, hãy làm tròn xuống

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 là âm và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 119, hãy làm tròn xuống>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 11

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 4 là âm và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121, hãy làm tròn

Sau khi làm tròn theo một trong bốn quy tắc trên, sau đó bạn chuyển vị trí thập phân trở lại bên trái.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 12

Các chiến lược làm tròn còn lại mà chúng tôi sẽ thảo luận về tất cả các nỗ lực để giảm thiểu những thành kiến ​​này theo những cách khác nhau.

Làm tròn một nửa so với số không

Nếu bạn kiểm tra chặt chẽ >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106, bạn sẽ nhận thấy rằng cả hai chức năng này đều không đối xứng xung quanh 0:

Một cách để giới thiệu đối xứng là luôn luôn làm tròn một chiếc cà vạt từ số không. Bảng sau đây minh họa cách thức hoạt động của nó:

Giá trị

>>>

Các chiến lược làm tròn còn lại mà chúng tôi sẽ thảo luận về tất cả các nỗ lực để giảm thiểu những thành kiến ​​này theo những cách khác nhau.

Làm tròn một nửa so với số không

Nếu bạn kiểm tra chặt chẽ >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106, bạn sẽ nhận thấy rằng cả hai chức năng này đều không đối xứng xung quanh 0:

Một cách để giới thiệu đối xứng là luôn luôn làm tròn một chiếc cà vạt từ số không. Bảng sau đây minh họa cách thức hoạt động của nó:

Giá trị

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 15>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 14

Các chiến lược làm tròn còn lại mà chúng tôi sẽ thảo luận về tất cả các nỗ lực để giảm thiểu những thành kiến ​​này theo những cách khác nhau.

Làm tròn một nửa so với số không

Nếu bạn kiểm tra chặt chẽ >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 106, bạn sẽ nhận thấy rằng cả hai chức năng này đều không đối xứng xung quanh 0:

Một cách để giới thiệu đối xứng là luôn luôn làm tròn một chiếc cà vạt từ số không. Bảng sau đây minh họa cách thức hoạt động của nó:

Giá trị

Tuy nhiên,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 145 sẽ thể hiện sự thiên vị làm tròn khi bạn làm tròn mọi số trong các bộ dữ liệu chỉ có mối quan hệ tích cực, chỉ có mối quan hệ tiêu cực hoặc nhiều mối quan hệ của một dấu hiệu hơn giá trị kia. Sự thiên vị chỉ được giảm thiểu tốt nếu có một số lượng tương tự các mối quan hệ tích cực và tiêu cực trong bộ dữ liệu. Làm tròn một nửa so với số khôngNếu bạn kiểm tra chặt chẽ >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 660 và >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 106, bạn sẽ nhận thấy rằng cả hai chức năng này đều không đối xứng xung quanh 0:Một cách để giới thiệu đối xứng là luôn luôn làm tròn một chiếc cà vạt từ số không. Bảng sau đây minh họa cách thức hoạt động của nó:
15.255 Giá trị 20
15.255 Vòng một nửa từ số không đến 15
15.255 Kết quả 15.3
15.255 Vị trí hàng trăm 15.26

Một nửa làm tròn cho chiến lược thậm chí là chiến lược được sử dụng bởi chức năng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 tích hợp của Python và là quy tắc làm tròn mặc định trong tiêu chuẩn IEEE-754. Chiến lược này hoạt động theo giả định rằng xác suất của một sự ràng buộc trong bộ dữ liệu được làm tròn hoặc làm tròn lên bằng nhau. Trong thực tế, đây thường là trường hợp.

Bây giờ bạn biết tại sao

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 87 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 84. Nó không phải là một sai lầm. Đó là một quyết định thiết kế có ý thức dựa trên các khuyến nghị vững chắc.

Để chứng minh cho chính mình rằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 thực sự làm tròn để thậm chí, hãy thử nó trên một vài giá trị khác nhau:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 16

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

Cuối cùng,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 bị trục trặc tương tự mà bạn đã thấy trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 nhờ lỗi biểu diễn điểm nổi:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 17

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

Cuối cùng,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 bị trục trặc tương tự mà bạn đã thấy trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 nhờ lỗi biểu diễn điểm nổi:

Bạn không nên quan tâm đến những lỗi không thường xuyên này nếu độ chính xác điểm nổi là đủ cho ứng dụng của bạn.

Khi độ chính xác là tối quan trọng, bạn nên sử dụng lớp Python từ ____297.

Lớp thập phân

Mô-đun thập phân Python sườn là một trong những tính năng bao gồm các loại pin của các ngôn ngữ mà bạn có thể không biết nếu bạn mới sử dụng Python. Nguyên tắc hướng dẫn của mô -đun

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 có thể được tìm thấy trong tài liệu:
  • Decimal, dựa trên mô hình dấu phẩy động được thiết kế với mọi người và nhất thiết phải có một nguyên tắc hướng dẫn tối quan trọng-máy tính phải cung cấp một số học hoạt động theo cách tương tự như số học mà mọi người học ở trường. - Đoạn trích từ đặc điểm số học thập phân. (Nguồn): >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 172 is actually >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 172, and >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 174 returns >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818, as you’d expect.: >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 172 is actually >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 172, and >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 174 returns >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818, as you’d expect.
  • Những lợi ích của mô -đun >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 bao gồm:: When you add >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 176 and >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 177, the result is >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 178 with the trailing zero maintained to indicate significance.: When you add >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 176 and >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 177, the result is >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 178 with the trailing zero maintained to indicate significance.
  • Đại diện thập phân chính xác: >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 172 thực sự là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 172 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 174 trả về >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 818, như bạn mong đợi.: The default precision of the >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 module is twenty-eight digits, but this value can be altered by the user to match the problem at hand.: The default precision of the >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 module is twenty-eight digits, but this value can be altered by the user to match the problem at hand.

Bảo tồn các chữ số quan trọng: Khi bạn thêm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 176 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 177, kết quả là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 178 với số 0 được duy trì để chỉ ra ý nghĩa.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 18

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

Cuối cùng,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 bị trục trặc tương tự mà bạn đã thấy trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 nhờ lỗi biểu diễn điểm nổi:

Bạn không nên quan tâm đến những lỗi không thường xuyên này nếu độ chính xác điểm nổi là đủ cho ứng dụng của bạn.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 19

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 10

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

Cuối cùng,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 bị trục trặc tương tự mà bạn đã thấy trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 nhờ lỗi biểu diễn điểm nổi:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 11

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

Cuối cùng,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 bị trục trặc tương tự mà bạn đã thấy trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 nhờ lỗi biểu diễn điểm nổi:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 12

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 13

Hàm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 gần như không có sai lệch, nhưng nó không hoàn hảo. Ví dụ, độ lệch làm tròn vẫn có thể được giới thiệu nếu phần lớn các mối quan hệ trong bộ dữ liệu của bạn làm tròn lên đến ngay cả thay vì làm tròn xuống. Các chiến lược giảm thiểu sự thiên vị thậm chí còn tốt hơn so với một nửa làm tròn với thậm chí còn tồn tại, nhưng chúng có phần mơ hồ và chỉ cần thiết trong hoàn cảnh khắc nghiệt.

Cuối cùng,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 bị trục trặc tương tự mà bạn đã thấy trong >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660 nhờ lỗi biểu diễn điểm nổi:

Giá trị chính xác của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 635 cộng với >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 108 là >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 116. Vì độ chính xác hiện là hai chữ số và chiến lược làm tròn được đặt thành mặc định là một nửa làm tròn thành chẵn, nên giá trị >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 116 được tự động làm tròn thành >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 118.Để thay đổi chiến lược làm tròn mặc định, bạn có thể đặt thuộc tính >>> truncate(125.6,-1)120.0>>> truncate(-1374.25,-3)-1000.0 119 thành bất kỳ một trong nhiều cờ. Bảng sau đây tóm tắt các cờ này và chiến lược làm tròn mà họ thực hiện:
Lá cờChiến lược làm tròn
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 Tập trung
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 Làm tròn xuống
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 122 Cắt ngắn
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 123 Làm tròn từ số không
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 124 Làm tròn một nửa so với số không
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 125 Làm tròn một nửa về phía 0
>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 Làm tròn một nửa để thậm chí

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 127

Làm tròn và làm tròn về phía 0

Điều đầu tiên cần chú ý là sơ đồ đặt tên được sử dụng bởi mô -đun

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 khác với những gì chúng tôi đã đồng ý trước đó trong bài viết. Ví dụ, >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 123 thực hiện các vòng tròn từ chiến lược không có, thực sự làm tròn các số âm.

Thứ hai, một số chiến lược làm tròn được đề cập trong bảng có thể trông không quen thuộc kể từ khi chúng ta đã thảo luận về chúng. Bạn đã thấy cách

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 hoạt động, vì vậy, hãy để xem xét từng người khác trong hành động.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 14

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

Thứ hai, một số chiến lược làm tròn được đề cập trong bảng có thể trông không quen thuộc kể từ khi chúng ta đã thảo luận về chúng. Bạn đã thấy cách

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 hoạt động, vì vậy, hãy để xem xét từng người khác trong hành động.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 15

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

Thứ hai, một số chiến lược làm tròn được đề cập trong bảng có thể trông không quen thuộc kể từ khi chúng ta đã thảo luận về chúng. Bạn đã thấy cách

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 hoạt động, vì vậy, hãy để xem xét từng người khác trong hành động.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 16

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

Thứ hai, một số chiến lược làm tròn được đề cập trong bảng có thể trông không quen thuộc kể từ khi chúng ta đã thảo luận về chúng. Bạn đã thấy cách

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 hoạt động, vì vậy, hãy để xem xét từng người khác trong hành động.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 17

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

Thứ hai, một số chiến lược làm tròn được đề cập trong bảng có thể trông không quen thuộc kể từ khi chúng ta đã thảo luận về chúng. Bạn đã thấy cách

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 hoạt động, vì vậy, hãy để xem xét từng người khác trong hành động.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 18

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 19

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 30

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

Thứ hai, một số chiến lược làm tròn được đề cập trong bảng có thể trông không quen thuộc kể từ khi chúng ta đã thảo luận về chúng. Bạn đã thấy cách

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 126 hoạt động, vì vậy, hãy để xem xét từng người khác trong hành động.

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 866 mà chúng tôi đã xác định trước đó:

Lưu ý rằng kết quả của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

Có ba chiến lược trong mô -đun

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 cho phép làm tròn nhiều sắc thái hơn. Phương pháp >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 124 làm tròn mọi thứ theo số gần nhất và phá vỡ mối quan hệ bằng cách làm tròn từ số không:

Lưu ý rằng

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 124 hoạt động giống như >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 145 của chúng tôi và không thích >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 660.

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 31

Lưu ý rằng kết quả của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

Ví dụ: các vòng sau tất cả các giá trị trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 đến ba số thập phân:

>>>

Lưu ý rằng kết quả của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

  • >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 187
  • >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 188
  • >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 189
  • >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 190

Ví dụ: các vòng sau tất cả các giá trị trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 đến ba số thập phân:

>>>

Lưu ý rằng kết quả của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

Ví dụ: các vòng sau tất cả các giá trị trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 đến ba số thập phân:

>>>

Lưu ý rằng kết quả của

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 35

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

Chiến lược

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 36

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 37

Ví dụ: các vòng sau tất cả các giá trị trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 đến ba số thập phân:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 38

Lưu ý rằng kết quả của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

Chiến lược

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

Ví dụ: các vòng sau tất cả các giá trị trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 193:

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 đến ba số thập phân:

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 194:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 39

Lưu ý rằng kết quả của

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 195:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 0

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 120 không đối xứng xung quanh 0.

Chiến lược

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 1

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 121 hoạt động giống như hàm >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 895 của chúng tôi:

>>>

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 2

Ví dụ: các vòng sau tất cả các giá trị trong

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 620 đến ba số thập phân:

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 32>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 174 là sự thương xót của lỗi biểu diễn dấu phẩy động, giống như >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 3 là.

Ví dụ: giá trị trong hàng thứ ba của cột đầu tiên trong mảng

Hai cấu trúc dữ liệu gấu trúc chính là def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 98, theo thuật ngữ rất lỏng lẻo hoạt động giống như bảng tính Excel và def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 99, mà bạn có thể nghĩ như một cột trong bảng tính. Cả hai đối tượng def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 99 và def truncate(n, decimals=0): multiplier = 10 ** decimals return int(n * multiplier) / multiplier 98 cũng có thể được làm tròn hiệu quả bằng các phương pháp >>> truncate(12.5) 12.0 >>> truncate(-5.963, 1) -5.9 >>> truncate(1.625, 2) 1.62 02 và >>> truncate(12.5) 12.0 >>> truncate(-5.963, 1) -5.9 >>> truncate(1.625, 2) 1.62 03:

Phương pháp

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 303 cũng có thể chấp nhận từ điển hoặc >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 199, để chỉ định độ chính xác khác nhau cho mỗi cột. Chẳng hạn, các ví dụ sau đây cho thấy cách làm tròn cột đầu tiên của >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 306 đến một vị trí thập phân, vị trí thứ hai đến hai và vị trí thứ ba đến ba thập phân:

Nếu bạn cần sự linh hoạt làm tròn hơn, bạn có thể áp dụng các hàm Numpy ____ ____194,

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 847 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 309 cho các đối tượng >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 199 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 198:

Các bài đọc từ cảm biến này cũng được lưu trữ trong cơ sở dữ liệu SQL để nhiệt độ trung bình hàng ngày bên trong lò có thể được tính toán mỗi ngày vào nửa đêm. Nhà sản xuất phần tử sưởi ấm bên trong lò khuyến nghị thay thế thành phần bất cứ khi nào nhiệt độ trung bình hàng ngày giảm

>>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 315 độ dưới mức bình thường.

Đối với tính toán này, bạn chỉ cần ba vị trí chính xác thập phân. Nhưng bạn biết từ vụ việc tại Sở giao dịch chứng khoán Vancouver rằng việc loại bỏ quá nhiều độ chính xác có thể ảnh hưởng đáng kể đến tính toán của bạn.

Nếu bạn có sẵn không gian, bạn nên lưu trữ dữ liệu ở mức độ chính xác đầy đủ. Nếu lưu trữ là một vấn đề, một quy tắc tốt là lưu trữ ít nhất hai hoặc ba vị trí chính xác thập phân hơn bạn cần cho tính toán của mình.

Cuối cùng, khi bạn tính toán nhiệt độ trung bình hàng ngày, bạn nên tính toán nó với độ chính xác đầy đủ có sẵn và làm tròn câu trả lời cuối cùng.

Tuân thủ các quy định nội tệ

Khi bạn gọi một tách cà phê với giá 2,40 đô la tại quán cà phê, thương gia thường thêm thuế cần thiết. Số tiền thuế đó phụ thuộc rất nhiều vào nơi bạn ở địa lý, nhưng vì lợi ích của cuộc tranh luận, hãy để nói rằng nó đã nói 6%. Thuế được thêm vào được đưa ra tới 0,144 đô la. Bạn có nên làm tròn số tiền này lên đến $ 0,15 hoặc xuống $ 0,14? Câu trả lời có thể phụ thuộc vào các quy định được quy định bởi chính quyền địa phương!

Những tình huống như thế này cũng có thể phát sinh khi bạn chuyển đổi một loại tiền khác. Năm 1999, Ủy ban các vấn đề kinh tế và tài chính của châu Âu đã mã hóa việc sử dụng một nửa vòng tròn từ chiến lược không có tiền tệ khi chuyển đổi tiền tệ sang đồng euro, nhưng các loại tiền tệ khác có thể đã áp dụng các quy định khác nhau.

Một kịch bản khác, Vòng tròn Thụy Điển, xảy ra khi đơn vị tiền tệ tối thiểu ở cấp độ kế toán ở một quốc gia nhỏ hơn đơn vị tiền tệ vật lý thấp nhất. Ví dụ, nếu một tách cà phê có giá 2,54 đô la sau thuế, nhưng không có đồng xu 1 xu được lưu hành, bạn sẽ làm gì? Người mua đã giành chiến thắng có số tiền chính xác và người bán có thể thay đổi chính xác.

Làm thế nào các tình huống như thế này được xử lý thường được xác định bởi một chính phủ quốc gia. Bạn có thể tìm thấy một danh sách các phương pháp làm tròn được sử dụng bởi các quốc gia khác nhau trên Wikipedia.

Nếu bạn đang thiết kế phần mềm để tính toán tiền tệ, bạn phải luôn kiểm tra luật pháp và quy định địa phương tại các địa điểm của người dùng.

Khi nghi ngờ, các mối quan hệ tròn để thậm chí

Khi bạn làm tròn các số trong các bộ dữ liệu lớn được sử dụng trong các tính toán phức tạp, mối quan tâm chính là hạn chế sự tăng trưởng của lỗi do làm tròn.

Trong tất cả các phương pháp mà chúng tôi đã thảo luận trong bài viết này, một nửa làm tròn cho chiến lược thậm chí của người dùng giảm thiểu sự thiên vị làm tròn tốt nhất. May mắn thay, Python, Numpy và Pandas đều mặc định cho chiến lược này, vì vậy bằng cách sử dụng các chức năng làm tròn tích hợp mà bạn đã được bảo vệ tốt!

Bản tóm tắt

Whew! Thật là một hành trình này đã được!

Trong bài viết này, bạn đã học được điều đó:

  • Có nhiều chiến lược làm tròn khác nhau, bây giờ bạn biết cách thực hiện trong Python thuần túy.

  • Mỗi chiến lược làm tròn vốn đã đưa ra một thiên vị làm tròn, và một nửa làm tròn cho chiến lược thậm chí là giảm thiểu sự thiên vị này, hầu hết thời gian.

  • Cách mà các máy tính lưu trữ các số điểm nổi trong bộ nhớ tự nhiên đưa ra một lỗi làm tròn tinh tế, nhưng bạn đã học được cách làm việc xung quanh điều này với mô-đun

    >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 698 trong thư viện tiêu chuẩn Python.
  • Bạn có thể làm tròn các mảng numpy và gấu trúc

    >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 199 và >>> truncate(125.6, -1) 120.0 >>> truncate(-1374.25, -3) -1000.0 198 đối tượng.
  • Có những thực tiễn tốt nhất để làm tròn với dữ liệu trong thế giới thực.

Nếu bạn quan tâm đến việc tìm hiểu thêm và đào sâu vào các chi tiết lớn của tất cả mọi thứ chúng tôi đã đề cập, các liên kết dưới đây sẽ khiến bạn bận rộn khá lâu.

Ít nhất, nếu bạn đã thích bài viết này và học được điều gì đó mới từ nó, hãy chuyển nó cho một người bạn hoặc thành viên trong nhóm! Hãy chắc chắn để chia sẻ suy nghĩ của bạn với chúng tôi trong các ý kiến. Chúng tôi rất thích nghe một số câu chuyện chiến đấu liên quan đến làm tròn của riêng bạn!

Happy Pythoning!

Tài nguyên bổ sung

Chiến lược làm tròn và thiên vị:

  • Vòng tròn, Wikipedia
  • Các số làm tròn mà không cần thêm sai lệch, từ zipcpu

Thông số kỹ thuật nổi và số thập phân:

  • IEEE-754, Wikipedia
  • Thông số số học thập phân chung của IBM

Những bài đọc thú vị:

  • Những gì mọi nhà khoa học máy tính nên biết về số học nổi, David Goldberg, Khảo sát điện toán ACM, tháng 3 năm 1991
  • Số học dấu nổi: Các vấn đề và hạn chế, từ python.org
  • Tại sao các tầng phân chia số nguyên Python, bởi Guido Van Rossum

Chủ đề