Sphinx浮点格式化

时间:2011-08-31 16:07:13

标签: python formatting python-sphinx

我正在使用Sphinx从代码生成文档。有没有人知道是否有办法控制默认参数生成的浮点数的格式。

例如,如果我有以下功能:

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

生成的文档最终看起来像:

foo(x = 0.96999999999997)

显然这是一个浮点精度问题,但有没有办法让文档看起来不那么难看?

2 个答案:

答案 0 :(得分:1)

您可以使用.. autofunction::指令覆盖函数签名。因此,为了解决您的示例,在模块foo(x=0.97)中定义为bar的函数:

.. automodule:: bar

   .. autofunction:: foo(x=0.97)

结果文档将使用提供的签名而不是解释版本与真正的长号。

您可以使用.. autoclass::.. automethod::等等同等地执行此操作。这种用法记录在this part of the sphinx.ext.autodoc文档中的“选项和高级用法”中。

答案 1 :(得分:0)

我没有使用Sphinx,所以我不确定这是否有效,但我的假设是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