区切りファイルを読み取り、レコードごとにファイル内の 3 番目の要素を追加するスクリプトがあります。ほとんどのデータ ファイルでは、これは 1 つを除いて正常に機能します。データ ファイルに 193 のレコードがある場合、1 つのデータ ファイルがあります。スクリプトから 2028219.43 が返されることを期待しています。代わりに、切り上げられたように見える指数が返されます。最初は、 printf を使用して数値を取得できると考えていましたが、数値が既に丸められている場合、期待どおりの結果が得られません。
これは、区切られたデータファイルを読み取るために使用しているコードです。各レコードのデータは、*. で区切られています。
export clm_total=$( awk -F* '{f1+=$3} END {print f1}' datafile.dat)
export new_clm_total=$(printf "%.2f" $clm_total)
スクリプトを実行すると、ログに次のように表示されます。
+ export clm_total=2.02822e+06
+ printf %.2f 2.02822e+06
+ export new_clm_total=2028220.00
+ echo 2028220.00
これはデータファイルのサンプルです。他にもレコードがあります。193 レコードすべてを表示する必要があるとは思いませんでした。
CLM*123456789*4820.9***13:A:1**A*Y*Y
CLM*123698547*3642.05***13:A:7**A*Y*Y
CLM*147852369*579.25***13:A:1**A*Y*Y
CLM*789654123*929.8***13:A:1**A*Y*Y
私が期待しているのは 2028219.43 です
私が得ているのは 2.02822e+06 です
これは 2028220.00 としてフォーマットされます