python mpmath nstr 不带零

python mpmath nstr strip zeros not

如何让 python mpmath.nstr 函数保留 mpmath.mpf('0') 的所有尾随零?看起来 strip_zeros 可选参数不适用于 mpmath.mpf('0'),如以下示例所示:

Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mpmath
>>> mpmath.dps=30
>>> mpmath.nstr(mpmath.mpf('0'), 10, strip_zeros=False)
'0.0'
>>> mpmath.nstr(mpmath.mpf('1'), 10, strip_zeros=False)
'1.000000000'
>>> 

从源代码来看,这似乎是 to_str() 中的设计 (https://github.com/fredrik-johansson/mpmath/blob/master/mpmath/libmp/libmpf.py):

    # Special numbers
    if not s[1]:
        if s == fzero:
            if dps: t = '0.0'
            else:   t = '.0'
            if show_zero_exponent:
                t += 'e+0'
            return t
        if s == finf: return '+inf'
        if s == fninf: return '-inf'
        if s == fnan: return 'nan'
        raise ValueError

我不知道为什么会这样,但考虑到这不是您的代码有问题,您可能应该向项目的维护者询问原因(也许还有解决方法) ,如果你需要的话)。