MaV*_*aVe 4 bash array awk bc math
由于使用 bc 的以下命令不适用于科学计数法中的数字,因此我想知道是否有替代方案,例如使用 awk?
sum=$( IFS="+"; bc <<< "${arrValues[*]}" )
Run Code Online (Sandbox Code Playgroud)
sum=$(
awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${arrValues[@]}"
)
Run Code Online (Sandbox Code Playgroud)
使用 zsh (如果您不必使用)bash,因为它内部支持浮点数:
sum=$((${(j[+])arrValues}))
Run Code Online (Sandbox Code Playgroud)
和ksh93:
如果您需要提供的精度bc,您可以预处理数字,以便将其12e23更改为(12*10^23):
sum=$(
IFS=+
sed 's/\([0-9.]*\)[eE]\([-+]*[0-9]*\)/(\1*10^\2)/g' <<< "${arrValues[*]}" |
bc -l
)
Run Code Online (Sandbox Code Playgroud)