2011-10-06 40 views

Trả lời

9

Tôi không biết về bất kỳ chức năng python để làm như vậy, nhưng bạn có thể dễ dàng mã số một:

import math 

def ceil(x, s): 
    return s * math.ceil(float(x)/s) 

Việc chuyển đổi thả nổi là cần thiết trong python 2 để tránh việc phân chia số nguyên nếu cả hai đối số là các số nguyên . Bạn cũng có thể sử dụng from __future__ import division. Điều này là không cần thiết với python 3.

+0

Làm thế nào điều đó có thể hiển nhiên và tôi không nghĩ về nó o_O. Cảm ơn bạn. – Vladimiroff

+1

'ceil (212, 10)' trả về '210' ngay cả khi nó trả về' 220'. Trong python 2.x, phân chia số nguyên mặc định trên các số nguyên. Tôi đã có một vấn đề tương tự (nhưng không hoàn toàn giống nhau) trong câu trả lời của tôi và đã buộc phải phân chia phao bằng cách sử dụng 1.0. – rplnt

+0

Bạn nói đúng, tôi đã không nghĩ về nó bởi vì tôi chủ yếu là mã với python3 bây giờ. Tôi đã chỉnh sửa câu trả lời để buộc chuyển đổi trôi nổi. – madjar

0

Những gì bạn có thể làm là điều này.

ceil = lambda x,y: math.ceil(x*(1.0/y))/(1.0/y) 

Nhưng nó không phải là dễ dàng.

Các vấn đề liên quan