在Python中只打印有效数字



给定这个简单的python脚本:

import sys, math
for i in range(1, len(sys.argv)):
    num = float(sys.argv[i])
    print('sin(%f) = %f' % (num, math.sin(num)))

使用下列参数运行:

python hw2a.py 1.4 -0.1 4 99

我想要这个输出:

sin(1.4)=0.98545
sin(-0.1)=-0.0998334
sin(4)=-0.756802
sin(99)=-0.999207

然而,当我运行它时,我在小数点和有效数字后面得到了许多无关紧要的数字(好吧,零)。我知道我可以使用%来指定固定数量的小数。3f,但我怎么才能让它打印小数点后面的所有数字,直到没有有效数字剩下?

提前感谢!

可以使用%g:

进行格式化
In [16]: a = [1.4, -0.1, 4, 99]
In [18]: for num in a:
    ...:     print('sin(%g) = %g' % (num, math.sin(num)))
    ...:     
sin(-0.1) = -0.0998334
sin(4) = -0.756802
sin(99) = -0.999207

使用sys.argv[i],不需要将i转换为浮点数和字符串,g格式化:

import sys, math
for i in range(1, len(sys.argv)):
    num = float(sys.argv[i])
    print "sin({}) = {:g}".format(sys.argv[i],math.sin(num))
python foo.py 1.4 -0.1 4 99
sin(1.4) = 0.98545
sin(-0.1) = -0.0998334
sin(4) = -0.756802
sin(99) = -0.999207

如果数据没有像@mhawke建议的那样手动输入,您可以使用:

print "sin({:g}) = {:g}".format(num, math.sin(num))

最新更新