如何在bash中移动小数点

J. *_*Doe 3 bash

我有一个存储为“1.20E20”的变量。我希望将其更改为“0.0120E22”。有没有一个简单的命令来改变这个值?我试过

let nh=$nh/100
Run Code Online (Sandbox Code Playgroud)

但这不起作用;我认为这是因为变量中的字符值。我知道有各种解决方案;解决这个问题的最佳方法是什么?

gle*_*man 6

我不知道强制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)