在laymans术语中,Python字符串格式“g”实际上是什么意思?

2024-05-20 09:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得有点傻,问什么我肯定是一个相当基本的问题,但我一直在学习Python,我有困难理解到底什么是“g”和“g”字符串格式真正做。

文件上说:

Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise.

我相信这是有道理的,但我就是不明白。有没有人能对这种格式提供一个更清楚的解释,并可能提供一些例子,说明何时以及如何使用它,而不是仅仅使用“e”或“f”。

谢谢


Tags: or文件字符串formatifis格式point
2条回答

这些例子可能是说明性的:

>>> numbers = [100, 10, 1, 0.1, 0.01, 0.001, 0.0001, 0.00001]
>>> for number in numbers:
...     print "%%e=%e, %%f=%f, %%g=%g" % (number, number, number)
... 
%e=1.000000e+02, %f=100.000000, %g=100
%e=1.000000e+01, %f=10.000000, %g=10
%e=1.000000e+00, %f=1.000000, %g=1
%e=1.000000e-01, %f=0.100000, %g=0.1
%e=1.000000e-02, %f=0.010000, %g=0.01
%e=1.000000e-03, %f=0.001000, %g=0.001
%e=1.000000e-04, %f=0.000100, %g=0.0001
%e=1.000000e-05, %f=0.000010, %g=1e-05
>>> for number in numbers:
...     print "%%0.2e=%0.2e, %%0.2f=%0.2f, %%0.2g=%0.2g" % (number, number, number)
... 
%0.2e=1.00e+02, %0.2f=100.00, %0.2g=1e+02
%0.2e=1.00e+01, %0.2f=10.00, %0.2g=10
%0.2e=1.00e+00, %0.2f=1.00, %0.2g=1
%0.2e=1.00e-01, %0.2f=0.10, %0.2g=0.1
%0.2e=1.00e-02, %0.2f=0.01, %0.2g=0.01
%0.2e=1.00e-03, %0.2f=0.00, %0.2g=0.001
%0.2e=1.00e-04, %0.2f=0.00, %0.2g=0.0001
%0.2e=1.00e-05, %0.2f=0.00, %0.2g=1e-05

Python的一个优点是,当您不完全理解它的含义时,可以很容易地在解释器中测试一些东西。

g和g类似于计算器显示的输出,如果输出非常大或非常小,你将得到科学记数法的响应。例如,0.000001用g表示“1e-06”,用g表示“1e-06”。但是不太小或太大的数字只显示为小数1000表示“1000”

e总是以指数格式给出结果1000给出1.000000e+03

f总是以十进制格式给出结果,但是它没有舍入g,g do 1000给出“1000.000000”

相关问题 更多 >