在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 来指定固定的小数位数,但我想知道怎么才能让它打印出小数点后所有的数字,直到没有有效数字为止?
提前谢谢你!
2 个回答
2
使用 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))
4
你可以使用 %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