use*_*925 22 python string python-2.4 number-formatting
我希望我的Python(2.4.3)输出数字具有某种格式.具体来说,如果数字是<= 6位有效数字的终止小数,则显示全部.但是,如果它有> 6位有效数字,则只输出6位有效数字.
"A"显示了Python如何编写浮点数."B"表示我希望他们写的方式.如何以这种方式使Python格式化我的数字?
A:
10188469102.605597
5.5657188485
3.539
22.1522612479
0
15.9638450858
0.284024
7.58096703786
24.3469152383
B:
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
Joa*_*son 40
你会想要那个g修饰符format下降无关紧要的零;
>>> "{0:.6g}".format(5.5657188485)
'5.56572'
>>> "{0:.6g}".format(3.539)
'3.539'
对不起,我的更新还包括我被限制使用Python 2.4.3这一事实,它没有format()函数.
即使没有该.format()函数,格式说明符也可以工作:
>>> for i in a:
...    print '%.6g' % (i,)
...
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
有一种方法可以保留尾随零,以便始终显示有效数字的数量。不完全是 OP 想要的,但可能对许多人有用。
a = [10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383]
for i in a:
    print("{:#.6g}".format(i))
1.01885e+10
5.56572
3.53900
22.1523
0.00000
15.9638
0.284024
7.58097
24.3469
请注意,这仅适用于format函数而不适用于%运算符。
根据文档:
该
'#'选项会导致使用“替代形式”进行转换。对于不同的类型,替代形式的定义不同。此选项仅对整数、浮点数、复数和小数类型有效。
'g': 通用格式...从有效数中删除无意义的尾随零,如果小数点后面没有剩余数字,小数点也会被删除,除非使用了“#”选项。