Hướng dẫn how do you round to hundreds in python? - làm thế nào để bạn làm tròn đến hàng trăm trong python?
Làm tròn thường được thực hiện trên các số điểm nổi và ở đây có ba hàm cơ bản bạn nên biết: 5 (vòng vào số nguyên gần nhất), 6 (luôn luôn làm tròn) và 7 (luôn luôn làm tròn). Show
Bạn hỏi về các số nguyên và làm tròn lên đến hàng trăm, nhưng chúng tôi vẫn có thể sử dụng 7 miễn là số của bạn nhỏ hơn 253. Để sử dụng 7, chúng tôi chỉ chia cho 100 đầu tiên, làm tròn và nhân với 100 sau đó:
Chia cho 100 đầu tiên và nhân với 100 "dịch chuyển" hai chữ số thập phân ở bên phải và bên trái để 7 hoạt động trên hàng trăm. Bạn có thể sử dụng 1 thay vì 100 nếu bạn muốn làm tròn đến hàng chục ( 2), hàng ngàn ( 3), v.v.Một cách khác để làm điều này là tránh các số điểm nổi (chúng có độ chính xác hạn chế) và thay vào đó chỉ sử dụng số nguyên. Các số nguyên có độ chính xác tùy ý trong Python, vì vậy điều này cho phép bạn làm tròn số lượng ở mọi kích thước. Quy tắc làm tròn rất đơn giản: Tìm phần còn lại sau khi phân chia với 100 và thêm 100 trừ phần còn lại này nếu không khác:
Điều này hoạt động cho các số có bất kỳ kích thước nào:
Tôi đã thực hiện một điểm chuẩn nhỏ của hai giải pháp:
Dung dịch nguyên tinh khiết nhanh hơn theo hệ số hai so với dung dịch 7.Thomas đã đề xuất một giải pháp dựa trên số nguyên giống hệt với giải pháp tôi có ở trên, ngoại trừ việc nó sử dụng một thủ thuật bằng cách nhân các giá trị boolean. Thật thú vị khi thấy rằng không có lợi thế tốc độ của việc viết mã theo cách này:
Như một nhận xét cuối cùng, tôi cũng lưu ý rằng, nếu bạn muốn làm tròn 101 bóng149 đến 100 và vòng 150. : Ví dụ 2: Vòng một số cho số lượng số thập phân đã cho Lưu ý: Hành vi của >>> roundup(100) 100 >>> roundup(130) 200 >>> roundup(1234567891234567891) 1234567891234567900L 6 đối với phao có thể gây ngạc nhiên. Thông báo $ python -m timeit -s 'import math' -s 'x = 130' 'int(math.ceil(x/100.0)) * 100' 1000000 loops, best of 3: 0.364 usec per loop $ python -m timeit -s 'x = 130' 'x if x % 100 == 0 else x + 100 - x % 100' 10000000 loops, best of 3: 0.162 usec per loop 3 cung cấp $ python -m timeit -s 'import math' -s 'x = 130' 'int(math.ceil(x/100.0)) * 100' 1000000 loops, best of 3: 0.364 usec per loop $ python -m timeit -s 'x = 130' 'x if x % 100 == 0 else x + 100 - x % 100' 10000000 loops, best of 3: 0.162 usec per loop 4 thay vì dự kiến $ python -m timeit -s 'import math' -s 'x = 130' 'int(math.ceil(x/100.0)) * 100' 1000000 loops, best of 3: 0.364 usec per loop $ python -m timeit -s 'x = 130' 'x if x % 100 == 0 else x + 100 - x % 100' 10000000 loops, best of 3: 0.162 usec per loop 5. Đây không phải là một lỗi: đó là kết quả của thực tế là hầu hết các phân số thập phân không thể được biểu diễn chính xác dưới dạng phao.
Khi thập phân $ python -m timeit -s 'import math' -s 'x = 130' 'int(math.ceil(x/100.0)) * 100' 1000000 loops, best of 3: 0.364 usec per loop $ python -m timeit -s 'x = 130' 'x if x % 100 == 0 else x + 100 - x % 100' 10000000 loops, best of 3: 0.162 usec per loop 6 được chuyển đổi thành số dấu phẩy động nhị phân, nó lại được thay thế bằng một xấp xỉ nhị phân, có giá trị chính xác là:Do đó, nó được làm tròn xuống còn 2,67. round(number, ndigits) Nếu bạn đang ở trong tình huống cần độ chính xác này, hãy xem xét sử dụng mô-đun $ python -m timeit -s 'import math' -s 'x = 130' 'int(math.ceil(x/100.0)) * 100' 1000000 loops, best of 3: 0.364 usec per loop $ python -m timeit -s 'x = 130' 'x if x % 100 == 0 else x + 100 - x % 100' 10000000 loops, best of 3: 0.162 usec per loop 7, được thiết kế để số học dấu phẩy động:Hàm 6 có hai tham số:
vòng () giá trị trả vềHàm vòng () trả về
Ví dụ 1: Làm thế nào vòng () hoạt động trong Python?
Đầu ra 10 11 6 Ví dụ 2: Vòng một số cho số lượng số thập phân đã cho 0Đầu ra 1Ví dụ 2: Vòng một số cho số lượng số thập phân đã cho: The behavior of 6 for floats can
be surprising. Notice 3 gives 4 instead of the expected 5. This is not a bug: it's a result of the fact that most decimal fractions can't be represented exactly as a float.Lưu ý: Hành vi của 6 đối với phao có thể gây ngạc nhiên. Thông báo 3 cung cấp 4 thay vì dự kiến 5. Đây không phải là một lỗi: đó là kết quả của thực tế là hầu hết các phân số thập phân không thể được biểu diễn chính xác dưới dạng phao. 2Khi thập phân 6 được chuyển đổi thành số dấu phẩy động nhị phân, nó lại được thay thế bằng một xấp xỉ nhị phân, có giá trị chính xác là:Do đó, nó được làm tròn xuống còn 2,67. 3Đầu ra 4 |