Python 字符串格式:e格式的宽度是多少?

Python 字符串格式:e格式的宽度是多少?,python,python-2.7,ironpython,Python,Python 2.7,Ironpython,我的IronPython控制台提供以下功能: >>> "%9.2e" % 1.236 '1.24e+00' >>> "%10.2e" % 1.236 ' 1.24e+00' >>> 输出中的字符总数似乎不分别对应于9或10。这是一个错误;使用%e格式时未正确处理宽度 CPython按预期处理宽度;e、 g.'%9.2e'%1.236生成长度为9的字符串。如果幸运的话,您可以尝试使用,它不会重复使用相同的代码: format(1.2

我的IronPython控制台提供以下功能:

 >>> "%9.2e" % 1.236
 '1.24e+00'
 >>> "%10.2e" % 1.236
 ' 1.24e+00'
 >>>
输出中的字符总数似乎不分别对应于9或10。

这是一个错误;使用
%e
格式时未正确处理宽度

CPython按预期处理宽度;e、 g.
'%9.2e'%1.236
生成长度为9的字符串。如果幸运的话,您可以尝试使用,它不会重复使用相同的代码:

format(1.236, '9.2e')

我无法在CPython 2.7.8上复制这个。我分别得到9个和10个字符。结论:您在IronPython中发现了一个bug。您能尝试一下
格式(1.236,'9.2e')
格式(1.236,'10.2e')
尽可能的解决方法吗?使用格式方法很好。很高兴听到这一点!我放弃了寻找float
\uuuuu格式\uuuuu
钩子,因此无法验证它是否使用了不同的代码。用于
%
字符串格式设置的
StringFormatter
类看起来没有那么好的可重用性,所以打赌是“没有代码共享”。我最好的猜测是这就是相关的源代码:(虽然我不会说C,也从来没有看过源代码…)@mgilson:实际的格式化实现是在中处理的。这里还有一线希望,因为
str.format()
方法和
format()
函数将格式化委托给类型本身。现在,要在该堆中找到
float
实现,并查看
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
方法的功能,也许它是通过单独的实现来实现的。我想我已经太习惯python的名称空间了。@PawelJasinski:更多的bug,耶@不,没有。