如何在printf中删除科学记数法中的0

时间:2017-05-05 13:34:42

标签: linux shell

在shell脚本中,我希望23.343输出为2.334E + 1。使用printf "%.3E\n" 23.343时,我得到2.334E + 01。那么如何通过printf中的一些技巧删除那个0?还有一种方法可以通过printf输出上述数字为0.233E + 02

1 个答案:

答案 0 :(得分:1)

使用printf本身,您不会:

  

e,E 双参数被舍入并以样式[ - ] d.ddde±dd转换,其中小数点字符前有一位数字    ...指数始终包含至少两位数;如果值为零,则指数为00。

但是在例如Bash,你可以手动从指数中删除零:

$ x=$(printf "%.3E\n" 23.343)
$ $ echo "${x/E+0/E+}"
2.334E+1

(我错过了问题的其他部分。)