我正在使用Sphinx从代码生成文档。有谁知道是否有办法控制从默认参数生成的浮点数的格式。狮身人面像浮点格式化
举例来说,如果我有以下功能:
def f(x = 0.97):
return x+1
生成的文件最终看起来像:
foo(x = 0.96999999999997)
显然,这是一个浮点精度的问题,而是有没有办法使文档看起来不那么难看?
我正在使用Sphinx从代码生成文档。有谁知道是否有办法控制从默认参数生成的浮点数的格式。狮身人面像浮点格式化
举例来说,如果我有以下功能:
def f(x = 0.97):
return x+1
生成的文件最终看起来像:
foo(x = 0.96999999999997)
显然,这是一个浮点精度的问题,而是有没有办法使文档看起来不那么难看?
您可以覆盖一个函数签名与.. autofunction::
指令。因此,要解决你的榜样,在模块bar
定义为foo(x=0.97)
功能:
.. automodule:: bar
.. autofunction:: foo(x=0.97)
,所得文档将使用所提供的,而不是解释版本与很长的数字签名。
您可以等效地使用.. autoclass::
和.. automethod::
等。这是在this part of the sphinx.ext.autodoc文档中的“选项和高级用法”中记录的用法。
我还没有使用狮身人面像,所以我不确定这是否可行,但我的假设是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
感谢您的回复。我真的希望有一个文档方面的解决方案,不包括修改实际的项目源。 – ctrlc