0
我想要下面的awk腳本將gpa打印出來作爲浮點數。所以在文件my_course.txt文本看起來像Awk打印整數而不是浮點數
CSC3320,SYSTEM LEVEL PROGRAMMING,3,1,A
CSC3210,ASSEMBLY LEVEL PROGRAMMING,3,1,B
應該檢查,看看是否在4場數爲1,如果這樣的話通過乘場3時間字段5無論是4,3,或2根據它是A,B還是C.然後把這個值加到分子上。對於分母它只會將字段3的值添加到可變分母。然後在結束時它會分開這兩個數字並給出一個輸出。但是,使用上面的文本,它會輸出3代替3.5的文本。我假設awk中的所有數字都是浮點數,所以發生了什麼。
calculate(){
awk -F, '
BEGIN{printf "Your GPA is : "}
numerator = 0.0;
denominator = 0.0;
/^CSC/{
if($4=1) {
if($5=="A"){
numerator+=(4.0*$3);
denominator+=$3;
} else if ($5 == "B"){
numerator+=(3.0*$3);
denominator+=$3;
} else if ($5 == "C"){
numerator+=(2.0*$3);
denominator+=$3;
} else {
;
}
}
}
END{print(numerator/denominator)}
' my_course.txt
}
使用
END{printf "%g", (numerator/denominator)}
打印3
END{printg "%f", (numerator/denominator)}
打印3.000000
什麼是分子和分母? (我指的是實際值。我知道的術語的意思。) – danfuzz
的實際值以上所列應分子= 21和分母= 6.對於計算爲分子=(3 * 4)+(3×3的文件)。對於分母= 3 + 3.但分子打印出9.000000,分母打印出3.000000。 – thad
我在腳本的開頭設置分母和分子等於零。所以每次運行它都會丟失以前的值並添加新的值。因此分子爲9.000000,分母爲3.000000。因爲在最後一行3是字段4和字段5中的值,所以B的值轉換爲3.我覺得自己像個白癡。感謝讓我真的認爲要檢查打印語句中的值。 – thad