Python Sphinx浮点格式

Python Sphinx浮点格式,python,formatting,python-sphinx,Python,Formatting,Python Sphinx,我正在使用Sphinx从代码生成文档。有人知道是否有方法控制由默认参数生成的浮点数的格式吗 例如,如果我有以下功能: def f(x = 0.97): return x+1 生成的文档最终看起来像: foo(x = 0.96999999999997) 显然这是一个浮点精度问题,但是有没有办法让文档看起来不那么难看呢?我没有使用Sphinx,所以我不确定这是否可行,但我的假设是使用repr()来确定文档的格式。您可以尝试使用自定义的\uuu repr\uuuu方法对float进行子类化

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

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

def f(x = 0.97):
    return x+1
生成的文档最终看起来像:

foo(x = 0.96999999999997)

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

我没有使用Sphinx,所以我不确定这是否可行,但我的假设是使用
repr()
来确定文档的格式。您可以尝试使用自定义的
\uuu repr\uuuu
方法对
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

您可以使用
覆盖函数签名。。自动功能::
指令。为了说明您的示例,在模块
bar
中定义为
foo(x=0.97)
的函数:

.. automodule:: bar

   .. autofunction:: foo(x=0.97)
生成的文档将使用提供的签名,而不是带有很长数字的解释版本


您可以使用
等效地执行此操作。。自动类::
。。automethod::
等。此用法在文档中的“选项和高级用法”中有记录。

谢谢您的回复。我真的希望有一个文档方面的解决方案,不包括修改实际的项目源代码。