Python的文档(Python 2.7)中是否定义了以下行为?
>>> '{:20}'.format(1e10)
' 10000000000.0'
>>> '{:20g}'.format(1e10)
' 1e+10'
事实上,第一个结果让我感到惊讶:documentation表示不指示浮点数的格式类型('f','e'等)等同于使用通用格式'g'。这个例子表明情况似乎并非如此,所以我很困惑。
这可能与“一般惯例是空格式字符串(”“)产生的结果相同,就像你在值上调用了str()一样。”?事实上:
>>> str(1e10)
'10000000000.0'
但是,在{:20}
格式的情况下,格式字符串不为空(它是20
),所以我很困惑。
那么,{:20}
的这种行为是否恰好在文档中定义了?精确定义浮点数的str()
的精确行为(str(1e11)
是否有指数,而不是str(1e10)
...)?
PS:我的目标是格式化numbers with an uncertainty,以便输出非常接近浮点数给出的数量(指数的存在与否等)。但是,我很难找到确切的格式规则。
PPS:'{:20}'.format(1e10)
给出的结果与字符串格式'{!s:20}'.format(1e10)
不同,字符串格式为左侧(通常用于字符串),而不是向右。
答案 0 :(得分:-1)
正如@blckknght在评论中解释的那样,'{:20}'
指定字符串宽度为20;要指定浮点精度,您需要一个小数点:{:.20}
或{:.20g}
。
至于数字格式化的原因,OP说:“一般惯例是空格式字符串(”“)产生的结果与在值上调用str()的结果相同。”这就是你得到的,按照格式字符串进行空格填充(数字格式是空的,格式可以容纳完整的str
表示。)