python字符串格式化符号:
%g 是 %f 和 %e 的简写是什么意思?到底是 %f 还是 %e?
对此我用代码测试了一下:
>>> a=100000
>>>print("%g"%(a))
100000
>>> a=10000000
>>>print("%g"%(a))
1e+07
>>> a=1000000
>>>print("%g"%(a))
1e+06
可以发现,%g 是自动选择输出格式的,在六位数的情况下就会以科学计数法方式输出,文章中说 %g 是 %f 和 %e 的简写,但是我发现上述不是科学计数法方式输出的时候输出的是一个整数,于是又进行了如下测试:
>>> a=100000.0
>>>print("%g"%(a))
100000
>>>print("%f"%(a))
100000.000000
>>>
发现 %g 在不是用 %e 输出的情况下和%f还是有区别的
对此我又做了如下测试:
>>> a=100000.1
>>>print("%g"%(a))
100000
>>> a=1.0
>>>print("%g"%(a))
1
>>> a=1.1
>>>print("%g"%(a))
1.1
发现在 a=100000.1 的时候输出的数并没有小数点后面的 1,对此我对比了 C 语言 %g 的格式输出,猜想 python 中应该如同 C 语言一样,%g 用于打印数据时,会去掉多余的零,至多保留六位有效数字。