2011-09-13 46 views
6

Tôi muốn định dạng một số có dấu thập phân trong số đó với số 0 đứng đầu.Định dạng số có dấu thập phân với số 0 hàng đầu

này

>>> '3.3'.zfill(5) 
003.3 

xem xét tất cả các chữ số và thậm chí cả dấu thập phân. Có một chức năng trong python mà chỉ xem xét toàn bộ một phần?

Tôi chỉ cần định dạng các số đơn giản không quá năm chữ số thập phân. Ngoài ra, sử dụng %5f dường như xem xét đường nhỏ thay vì số 0 đứng đầu.

+0

Bạn đã thử '% 5.1f' chưa? Nếu vậy, có gì sai với điều đó? –

+1

Nó đệm chuỗi bằng dấu cách và vẫn xem điểm thập phân và mọi thứ sau đó. – 3eee3

Trả lời

2

Bắt đầu với một chuỗi như ví dụ của bạn có, bạn có thể viết một hàm nhỏ như thế này để làm những gì bạn muốn:

def zpad(val, n): 
    bits = val.split('.') 
    return "%s.%s" % (bits[0].zfill(n), bits[1]) 

>>> zpad('3.3', 5) 
'00003.3' 
+1

Đó chính là điều tôi không muốn làm, Nhưng nếu không có chức năng tích hợp, tôi đoán nó sẽ hoạt động. Cảm ơn. – 3eee3

+0

@ 3ee3 Hãy thử điều này trên ''3''. Nếu bạn muốn một phiên bản hoạt động trên 'int' cũng như 'float', hãy thêm một dòng 'bits [0] = bits [0] .zfill (n)' trước 'return' và thay đổi' return 'to' return bits = '.'. join (bit) '. ' – agf

20

Đó có phải là những gì bạn tìm kiếm không?

>>> "%07.1f" % 2.11 
'00002.1' 

Vì vậy, theo nhận xét của bạn, tôi có thể đưa ra một này (mặc dù không phải là thanh lịch nữa):

>>> fmt = lambda x : "%04d" % x + str(x%1)[1:] 
>>> fmt(3.1) 
0003.1 
>>> fmt(3.158) 
0003.158 
+1

Tôi không muốn tính đến phần nhỏ trong mã của mình. – 3eee3

+0

Ah, giờ tôi đã hiểu. Tôi đã chỉnh sửa mã để giải thích điều đó. – rumpel

3

Giống như này?

>>> '%#05.1f' % 3.3 
'003.3' 
+0

Nó vẫn xem xét phần phân số và cắt bỏ bất kỳ thứ gì sau số thập phân đầu tiên – 3eee3

+0

Vì vậy, hãy tính đến số chữ số thập phân và thêm chúng vào số thập phân. – Santa

5

Tôi thích phong cách mới của định dạng.

loop = 2 
pause = 2 
print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause) 
>>>Begin Loop 2, 0002.1 Seconds Pause 

Trong {1: 06.2f}:

  • 1 là giữ chỗ cho tạm dừng biến
  • 0 chỉ để pad với số không hàng đầu
  • 6 tổng số ký tự bao gồm cả chữ số thập phân điểm
  • 2 độ chính xác
  • f chuyển đổi số nguyên thành phao
+0

Hoạt động hoàn hảo! Chỉ cần thay đổi nhỏ cho Python 3. – Royi

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