我有一个存储为“1.20E20”的变量。我希望将其更改为“0.0120E22”。有没有一个简单的命令来改变这个值?我试过
let nh=$nh/100
Run Code Online (Sandbox Code Playgroud)
但这不起作用;我认为这是因为变量中的字符值。我知道有各种解决方案;解决这个问题的最佳方法是什么?
我不知道强制printf移动指数的方法。让我们手动完成:将系数乘以 10 -2,然后将指数加 2。
n=1.20E20
m=2
IFS="E" read coeff exp <<<"$n"
new=$(printf "%.4fE%d\n" "$(echo "$coeff * 10^-($m)" | bc -l)" "$((exp+m))")
# => 0.0120E22
Run Code Online (Sandbox Code Playgroud)
我们可以验证:
$ printf "%e\n" "$new"
1.200000e+20
Run Code Online (Sandbox Code Playgroud)