如何使Python格式浮点数具有一定数量的有效数字?

时间:2014-09-11 05:53:57

标签: python string number-formatting python-2.4

我希望我的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

3 个答案:

答案 0 :(得分:32)

您希望g的{​​{1}}修饰符丢弃无关紧要的零;

format

  

抱歉,我的更新还包括我不得不使用的事实   Python 2.4.3,它没有format()函数。

格式说明符即使没有>>> "{0:.6g}".format(5.5657188485) '5.56572' >>> "{0:.6g}".format(3.539) '3.539' 函数也可以工作:

.format()

答案 1 :(得分:4)

试试这种方式

a=[10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383]

 for i in a:
    if i >100:
        print '{:.6e}'.format(i)
    else:
        print '{:.6f}'.format(i)

用于较低版本的python

for i in a:
    if i >100:
        print '%6e'%i
    else:
        print '%6f'%i

输出

1.018847e+10
5.565719
3.539000
22.152261
0.000000
15.963845
0.284024
7.580967
24.346915

答案 2 :(得分:0)

有一种方法可以保留后缀零,以便始终显示有效位数。这并不是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函数,不适用于%运算符。

参考:一个undocumented feature (as of 2019)