2011-08-31 85 views
7

我正在使用Sphinx從代碼生成文檔。有誰知道是否有辦法控制從默認參數生成的浮點數的格式。獅身人面像浮點格式化

舉例來說,如果我有以下功能:

def f(x = 0.97): 
    return x+1 

生成的文件最終看起來像:

foo(x = 0.96999999999997) 

顯然,這是一個浮點精度的問題,而是有沒有辦法使文檔看起來不那麼難看?

回答

1

您可以覆蓋一個函數簽名與.. autofunction::指令。因此,要解決你的榜樣,在模塊bar定義爲foo(x=0.97)功能:

.. automodule:: bar 

    .. autofunction:: foo(x=0.97) 

,所得文檔將使用所提供的,而不是解釋版本與很長的數字簽名。

您可以等效地使用.. autoclass::.. automethod::等。這是在this part of the sphinx.ext.autodoc文檔中的「選項和高級用法」中記錄的用法。

0

我還沒有使用獅身人面像,所以我不確定這是否可行,但我的假設是repr()用於確定文檔的格式。您可以嘗試子類float用自定義__repr__方法會返回一個更好看號碼,看看是否有幫助:

class my_float(float): 
    def __repr__(self): 
     return str(self) 

>>> float(0.97) 
0.96999999999999997 
>>> my_float(0.97) 
0.97 

>>> def foo(x = my_float(0.97)): 
...  return x+1 
... 
>>> foo() 
1.97 
+0

感謝您的回覆。我真的希望有一個文檔方面的解決方案,不包括修改實際的項目源。 – ctrlc