使用bash将科学计数法转换为十进制数

时间:2019-11-28 12:20:23

标签: linux bash shell awk

我需要使用shell脚本将1.22661727081984E + 002转换为122.661727081984。我已经使用以下命令尝试过:

echo "+1.22661727081984E+002" | awk -F"E" 'BEGIN{OFMT="%10.10f"} {print $1 * (10 ^ $2)}' 

输出:

122.6617270820

它给了我输出,但是四舍五入到最后四位。

我需要输出而没有四舍五入的结果。

2 个答案:

答案 0 :(得分:1)

使用awk可以按以下方式进行操作:

awk '{ printf("%.100f\n",$1) }'

(假设数字是第一个参数)

示例:

echo "+1.22661727081984E+002"|awk '{ printf("%.100f\n",$1) }'
122.6617270819839973228226881474256515502930000000000000000000000000000000000000000000000000000000000000

(您可以通过更改f前面的数字来限制位数)

答案 1 :(得分:1)

使用Bash的printf

$ printf "%.14f\n" 1.22661727081984E+002
122.66172708198400