from math import ceil
def ceil_to_tens(x):
return int(ceil(x/10.0)) * 10
Sửa: okay, bây giờ mà tôi có một không xứng đáng "Nice câu trả lời" huy hiệu cho câu trả lời này, tôi nghĩ rằng nợ cộng với một giải pháp thích hợp bằng cách sử dụng decimal
mô-đun mà không bị những vấn đề này :) Cảm ơn Jeff đã chỉ ra điều này. Vì vậy, một giải pháp sử dụng decimal
công trình như sau:
from decimal import Decimal, ROUND_UP
def ceil_to_tens_decimal(x):
return (Decimal(x)/10).quantize(1, rounding=ROUND_UP) * 10
Tất nhiên đoạn mã trên đòi hỏi x
là một số nguyên, một chuỗi hoặc một đối tượng Decimal
- nổi sẽ không làm việc như rằng sẽ đánh bại toàn bộ mục đích của việc sử dụng mô-đun decimal
.
Thật đáng tiếc là Decimal.quantize
không hoạt động đúng với số lớn hơn 1, nó sẽ lưu mẹo lừa nhân đôi.
Nguồn
2010-10-21 11:41:04
Bạn cần phải thực sự cẩn thận với điểm nổi tại đây. Bạn nghĩ x là 10.0, nhưng thực sự nó là 10.000 ... 000132 và bạn nhận được câu trả lời mà bạn không mong đợi. Bạn có thể tốt hơn với số học điểm cố định hoặc Thập phân. –
Cảm ơn - nhận xét của bạn đã đánh giá cao sự tò mò của tôi vì vậy tôi đã mở rộng câu trả lời của mình bằng một biến thể sử dụng mô-đun 'thập phân '. –