2014-04-10 33 views
4

我正在向60s中具有根的程序寫入輸入文件,並且它從文本文件上的固定寬度數據字段中讀取數據。其格式爲:如何在Python中將浮點數格式化爲最大固定寬度

  • 字段寬度爲8個字符
  • 浮點數必須包含一個或'.'上指數格式,例如被寫入'1.23e8'

最近我已經得到是

print "{0:8.3g}".format(number) 

它產生'1.23e+06'1234567,並' 1234'1234

我想不過來調整這一點,讓

  • '1234567.'1234567(即不打算要求之前 指數形式),
  • ' 1234.'1234(即以一個點結束如此它不被解釋爲一個整數),
  • '1.235e+7'12345678(即只使用一個數字作爲指數),
  • '-1.23e+7'-1234567(即不會違反 負數的最大8位數)。

既然這是(據我記得)用Fortran很容易實現,並且問題可能出現時,然後與舊代碼交互時,我懷疑必須有一些簡單的方法來做到這一點?

回答

1

你已經明顯地接近了,但我認爲你的最終解決方案將涉及編寫一個自定義格式化程序。例如,我不相信mini-formatting language可以像你想要的那樣控制指數的寬度。

(順便說一句,在你的第一個例子中,你沒有一個「+」後的「E」,但你做了別人。讓你想可能會幫助其他應答者說清楚哪一個。)

如果我正在寫這個格式化函數,我要做的第一件事就是爲它編寫一套完整的測試。 doctestunittest將是合適的。

然後你工作你的格式化功能,直到所有這些測試通過。

相關問題