zip(a,b,c,d)
with open('output.dat', 'w') as f:
print >>f, ("%-25s %-25s %-25s %s" %(x, y, z, k))
writer = csv.writer(f, delimiter='\t')
writer.writerows(zip(a,b,c,d))
此代码的输出类似于
51715.505899065996 2724172.4436709681 3081070.212397085 3419080.1274145059
我想用指数的形式写这些数字并四舍五入,例如对于第一个输出
5.172E4 ........
我该怎么做?
答案 0 :(得分:5)
您可以使用科学计数法格式,如下所示:
num = 51715.505899065996
# .3 to keep 3 digit in fractional part
print('%.3e' % num)
print('{:.3e}'.format(num))
# 5.172e+04
对于您的情况,您可以按地图使用格式,我将a
,b
,c
,d
视为列表,我不知道我是否知道对此有误解:
a = [51715.505899065996, 2724172.4436]
b = [2724172.4436709681, 81070.2123]
c = [3081070.212397085, 715.50589906599]
d = [3419080.1274145059, 9080.12741450]
zip(a,b,c,d)
with open('output.dat', 'w') as f:
# print >>f, ("%-25s %-25s %-25s %s" %(x, y, z, k))
writer = csv.writer(f, delimiter='\t')
for A, B, C, D in zip(a,b,c,d):
writer.writerow(map(lambda x:'{:.3e}'.format(x), (A,B,C,D)))
希望它对您有帮助。
答案 1 :(得分:2)
print('%.xe' % y)
或print('{:.xe}'.format(y)
将以科学计数法打印数字y
,十进制精度为x
位
例如,print('%.2e' % 12)
将打印1.20e+.01