2013-03-25 191 views
9

Tôi đang đọc dữ liệu từ một tệp, sửa đổi nó và ghi nó vào một tệp khác. Các tập tin mới sẽ được đọc bởi một chương trình khác và do đó nó là rất quan trọng để thực hiện so với định dạng chính xácThêm số 0 vào dấu phẩy sau dấu thập phân trong Python

ví dụ, một trong những con số trên tập tin đầu vào của tôi là:

1.000000 

kịch bản của tôi áp dụng một số toán học để các cột và phải trả lại

2.000000 

Nhưng những gì hiện đang quay trở lại là

2.0 

Làm cách nào để viết một phao cho ví dụ my_float = 2.0, dưới dạng my_float = 2.00000 vào một tệp?

+3

@DemianBrecht: Chúng ta đang nói về định dạng nổi ở đây. –

+0

@MartijnPieters: Cho dù định dạng phao hay định dạng biểu diễn chuỗi của phao, đầu ra cũng giống như khi viết vào một tệp. Mặc dù tôi đồng ý (bây giờ) rằng liên kết của tôi không phải là một bản dupe, nhưng có lẽ "liên quan". –

Trả lời

27

Format nó đến 6 chữ số thập phân:

format(value, '.6f') 

Demo:

>>> format(2.0, '.6f') 
'2.000000' 

Các format() function biến giá trị cho chuỗi sau formatting instructions nhất định.

+0

Sửa lỗi nếu tôi sai, nhưng điều này cũng có hướng dẫn ngầm định "vòng đến 6 chữ số thập phân" không chỉ "giữ 6 chữ số thập phân". Vì vậy, trong khi nó có ý nghĩa trong bối cảnh của tất cả các số không, lý do người ta có thể đi đến độ chính xác được ngụ ý rằng bạn thực sự có thể sử dụng độ chính xác đó, vì vậy bạn có thể cần phải đi xa hơn (và cắt ngắn) nếu bạn muốn tránh làm tròn lỗi). Ví dụ: hãy thử: định dạng (2.0000008, '.6f'). Nhưng nếu không, tôi hoàn toàn đồng ý với Martijn. –

+1

@Nascent_Notes: Vì * đầu vào * được giới hạn ở 6 chữ số thập phân, tôi nghĩ rằng an toàn để giả định rằng làm tròn đến 6 số thập phân là tốt. –

+0

Cảm ơn, giải pháp đó hoàn toàn phù hợp với tôi! Và có, đầu vào được giới hạn đến 6 chữ số thập phân vì vậy tôi (hy vọng) sẽ không đụng vào lỗi làm tròn –

1

Câu trả lời bằng cách sử dụng lệnh format() ở trên, nhưng bạn có thể muốn nhìn vào đối tượng thư viện chuẩn thập phân nếu bạn đang làm việc với phao cần đại diện cho giá trị chính xác. Bạn có thể đặt độ chính xác và làm tròn trong lớp ngữ cảnh của nó, nhưng theo mặc định nó sẽ giữ lại số lượng 0 bạn đặt vào nó:

>>> import decimal 
>>> x = decimal.Decimal('2.0000') 
>>> x 
Decimal('2.0000') 
>>> print x 
2.0000 
>>> print "{0} is a great number.".format(x) 
2.0000 is a great number. 
+0

Làm thế nào để bạn đặt độ chính xác cho một cái gì đó khác? – JeromeJ

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