2012-01-08 36 views
5

Tôi đang làm việc trên một chương trình lưu trữ các số dưới dạng phao mà cuối cùng tôi ghi vào một tệp dưới dạng tiền tệ. Tôi hiện đang sử dụng hàm round() để làm tròn nó thành 2 số thập phân, nhưng khu vực kinh doanh muốn tôi làm tròn số xu tiếp theo cho dù số thập phân thứ ba là bao nhiêu. Ví dụ:

x = 39.142 

Trong trường hợp này, tôi đang cố gắng làm cho x tròn thành 39,15. Rõ ràng khi tôi làm tròn chức năng tôi nhận được 39.14 ...

>>> round(x, 2) 
    39.14 

Có cách nào tôi luôn có thể làm tròn lên xu tiếp theo không? Tôi nên đề cập đến những con số tôi đang xử lý được in ra tập tin như tiền tệ.

+4

Nếu nó là tiền tệ, xin vui lòng không làm việc với phao. Nó chỉ yêu cầu rắc rối. Nó có thể được thực hiện, tất nhiên, nhưng nó rắc rối hơn nó có giá trị. – harold

+2

@LanceCollins: Câu trả lời bạn đã chọn là sai. Xem nhận xét của tôi. –

Trả lời

14

Sử dụng decimal module:

import decimal 
D = decimal.Decimal 
cent = D('0.01') 

x = D('39.142') 
print(x.quantize(cent,rounding=decimal.ROUND_UP)) 
# 39.15 

thập phân có nhiều lựa chọn để làm tròn. Các tùy chọn và ý nghĩa của chúng có thể được tìm thấy here.

+0

+1 Đây phải là câu trả lời được chấp nhận. Tim sẽ bị xóa. –

+0

Tim - Tôi chấp nhận câu trả lời của unutbu. –

1

nếu bạn muốn viết bằng xu, bạn có thể sử dụng int (x * 100 + .5) để lấy số nguyên từ đô la nổi.

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