2011-08-31 68 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