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