Bcを使用する次のコマンドは、科学的記数法の数値では機能しないため、別の方法について考えていました。 awkを使用していますか?
sum=$( IFS="+"; bc <<< "${arrValues[*]}" )
sum=$(
awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${arrValues[@]}"
)
Zshを使用する場合(bash
を使用するためにhaveを使用しない場合)、内部で浮動小数点数をサポートするため:
sum=$((${(j[+])arrValues}))
ksh93
の場合:
bc
が提供する種類の精度が必要な場合は、数値を前処理して、12e23
を(12*10^23)
に変更できます。
sum=$(
IFS=+
sed 's/\([0-9.]*\)[eE]\([-+]*[0-9]*\)/(\1*10^\2)/g' <<< "${arrValues[*]}" |
bc -l
)
Perlソリューション:
Perl -MList::Util=sum -l -e 'print sum(@ARGV)' "${array[@]}"