ste*_*fen 1 c python format-specifiers
我在Python2,Python3和C中尝试过这个:
为什么这些格式字符串返回不同精度的数字?
>>> "%.3e" % 123456789
'1.235e+08'
>>> "%.3g" % 123456789
'1.23e+08'
Run Code Online (Sandbox Code Playgroud)
从python文档:
'e'指数表示法.使用字母"e"以科学记数法打印数字以表示指数.默认精度为6.
'g'
一般格式.对于给定的精度p> = 1,这将数字舍入为p有效数字,然后根据其大小以定点格式或科学计数形式对结果进行格式化.精确的规则如下:假设用表示类型'e'和精度p-1格式化的结果将具有指数exp.然后,如果-4 <= exp <p,则使用表示类型"f"和精度p-1-exp格式化数字.否则,使用表示类型"e"和精度p-1格式化数字.在这两种情况下,从有效数字中删除无关紧要的尾随零,如果后面没有剩余数字,则也会删除小数点.
无论精度如何,正负无穷大,正零和负零以及nans分别被格式化为inf,-inf,0,-0和nan.
精度0被视为等于1的精度.默认精度为6.
使用替代值:
>>> "%.3e" % 123
'1.230e+02'
>>> "%.3g" % 123
'123'
>>> "%.3e" % 1234
'1.234e+03'
>>> "%.3g" % 1234
'1.23e+03'
Run Code Online (Sandbox Code Playgroud)
然后,差异显然在于如何指定精度.g似乎使用精度作为精度的正常定义,而e使用小数点后的数字.