Python 的文档(Python 2.7)中是否定义了以下行为?
>>> '{:20}'.format(1e10)
' 10000000000.0'
>>> '{:20g}'.format(1e10)
' 1e+10'
事实上,第一个结果让我吃惊:文档表明不为浮点数指明格式类型('f'、'e' 等)等同于使用通用格式 'g'。这个例子表明情况似乎并非如此,所以我很困惑。
也许这与“一般约定是空格式字符串 ("") 产生的结果与您在值上调用 str() 时产生的结果相同。”这一事实有关?实际上:
>>> str(1e10)
'10000000000.0'
但是,在格式的情况下{:20}
,格式字符串不是空的(它是20
),所以我很困惑。
那么,这种行为是否{:20}
在文档中精确定义?str()
浮点数的精确行为是否精确定义(str(1e11)
有指数,但没有str(1e10)
……)?
PS:我的目标是格式化具有不确定性的数字,以便输出非常接近浮点数给出的结果(是否存在指数等)。但是,我很难找到确切的格式规则。
PPS:'{:20}'.format(1e10)
给出的结果与字符串格式不同'{!s:20}'.format(1e10)
,其中字符串向左刷新(与字符串一样)而不是向右。