2011-08-31 28 views
7

私はコードからドキュメントを生成するためにSphinxを使用しています。誰かが、デフォルトの引数から生成された浮動小数点数のフォーマットを制御する方法があるかどうかを知っていますか?例えばスフィンクス浮動小数点フォーマット

私は、次の機能がある場合:

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

を生成されたドキュメントは、ように見える終わる:

foo(x = 0.96999999999997) 

は明らかにこれは、浮動小数点精度の問題ですが、への道がありますドキュメントが醜く見えないようにしますか?

答えて

1

あなたは.. autofunction::ディレクティブで関数のシグネチャを上書きすることができます。だから、モジュールbarfoo(x=0.97)として定義された関数をあなたの例に対処するために:

.. automodule:: bar 

    .. autofunction:: foo(x=0.97) 

、そして得られたドキュメントが提供さ署名の代わりに、本当に長い数と解釈されたバージョンを使用します。

.. autoclass::.. automethod::などと同じことができます。これは、文書の「オプションと高度な使い方」に使用方法が記載されています。

0

私はスフィンクスを使用していないので、これはうまくいきませんが、私の前提では、repr()はドキュメントのフォーマットを決定するために使用されています。あなたはそれができますかどうかを確認するためによりよい探して番号を返しますカスタム__repr__方法でサブクラス化floatを試すことができます。

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