给出这个简单的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来指定固定的小数位数,但是如何让它打印小数点后面的所有数字,直到没有有效数字?
提前致谢!
答案 0 :(得分: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
答案 1 :(得分: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))
答案 2 :(得分:0)
您可以使用rstrip删除最后的零。
def without_trailing_zeroes(f):
return str(float(f)).rstrip('0').rstrip('.')
print without_trailing_zeroes(0.1234000)
0.1234