演習 - 10 進出力を書式設定する
この演習では、最終的な GPA を計算し、目的のレポート形式を実現するためにコンソール出力を変更します。 GPA は、成績評価点の合計を履修単位時間の合計で除算したものと等しくなります。
最終的な GPA を計算する
.NET エディターで、コースの情報を表示するために使われる Console.WriteLine() ステートメントを見つけます。
前の演習の次のコードを削除します。
Console.WriteLine($"{totalGradePoints} {totalCreditHours}");
値が正しいことを確認したので、この行は不要になりました。
Console.WriteLine() ステートメントの上に、空白のコード行を作成します。
作成した空白のコード行で、最終的な GPA を格納する変数を初期化するには、次のコードを入力します。
decimal gradePointAverage = totalGradePoints/totalCreditHours;
少し時間を取って、除算するデータ型について考えます。
除算計算の結果を 10 進値にする場合、被除数または除数 (あるいは両方) は 10 進型である必要があります。 計算で整数変数を使用する場合は、キャスト演算子を使用して整数を 10 進数に一時的に変換する必要があります。
除算から 10 進値を取得するには、次のようにコードを更新します。
decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
最後の Console.WriteLine() ステートメントに移動し、最後のステートメントの後に新しい空白のコード行を作成します。
最終的な GPA を表示するには、次のコードを入力します。
Console.WriteLine($"Final GPA: {gradePointAverage}");
結果を表示するには、[実行] を選びます。
アプリケーションの出力を次の出力と比較します。
English 101 4 3 Algebra 101 3 3 Biology 101 3 4 Computer Science I 3 4 Psychology 101 4 3 Final GPA: 3.3529411764705882352941176471
10 進出力の書式を設定する
10 進数の結果には、標準の GPA よりも多くの桁が含まれていることにお気付きかもしれません。 このタスクでは、10 進数の GPA 値を操作して、3 桁の数字のみが表示されるようにします。
最終的には、GPA の最初の桁、小数点、その後に小数点以下の最初の 2 桁を表示します。 この形式を実現するには、変数を使用して先頭と末尾の桁をそれぞれ格納し、それから Console.WriteLine() を使用して、それらをまとめて出力します。 学習したいくつかの算術演算を使用して、先頭と末尾の桁を抽出できます。
Note
開発者としての体験を継続するにつれて、データに書式設定を自動的に適用できる、組み込みの操作が見つかります。 ひとまず、これは、ここまでに学んだ内容をおさらいする絶好の機会です。
Console.WriteLine() ステートメントの先頭に移動します。
Console.WriteLine() ステートメントの上に、空白のコード行を作成します。
作成した空白のコード行で、GPA の先頭桁を格納する変数を初期化するには、次のコードを入力します。
int leadingDigit = (int) gradePointAverage;
10 進数から先頭桁を抽出するために、それを整数値にキャストしていることに注目してください。 小数値をキャストしても結果が切り上げられないため、これは単純で信頼性の高い方法です。 つまり、GPA が 2.99 の場合、10 進値を int にキャストすると、2 になります。
小数点以下の最初の 2 桁を格納する変数を初期化するには、次のコードを入力します。
int firstDigit = (int) (gradePointAverage * 10) % 10;
この演算の前半では、小数点を 1 桁右に移動し、それを整数にキャストします。 後半では、剰余 (またはモジュロ) 演算子を使用して、10 による除算の剰余を取得します (この整数内の最後の桁を分離します)。 次に例を示します。
たとえば
gradePointAverage = 2.994573
があるとします。次に、これらの値に対してこの演算を実行すると、次の手順になります。int firstDigit = (int) (2.994573 * 10) % 10; int firstDigit = 29 % 10; int firstDigit = 9;
これで、この結果の
firstDigit
の値は 9 です。次に、同じ演算を適用して 2 桁目を取得します。
新しい空白のコード行に、次のコードを入力します。
int secondDigit = (int) (gradePointAverage * 100 ) % 10;
この行内では、小数点を 2 桁移動し、モジュロ演算子を使用して最後の桁を取得します。
最終的な GPA 出力を修正するには、最後の Console.WriteLine() ステートメントを次のように更新します。
Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
作業を確認する
このタスクでは、コードを実行して、出力が正しいことを検証します。
コードが次のようになっていることを確認します。
string studentName = "Sophia Johnson"; string course1Name = "English 101"; string course2Name = "Algebra 101"; string course3Name = "Biology 101"; string course4Name = "Computer Science I"; string course5Name = "Psychology 101"; int course1Credit = 3; int course2Credit = 3; int course3Credit = 4; int course4Credit = 4; int course5Credit = 3; int gradeA = 4; int gradeB = 3; int course1Grade = gradeA; int course2Grade = gradeB; int course3Grade = gradeB; int course4Grade = gradeB; int course5Grade = gradeA; int totalCreditHours = 0; totalCreditHours += course1Credit; totalCreditHours += course2Credit; totalCreditHours += course3Credit; totalCreditHours += course4Credit; totalCreditHours += course5Credit; int totalGradePoints = 0; totalGradePoints += course1Credit * course1Grade; totalGradePoints += course2Credit * course2Grade; totalGradePoints += course3Credit * course3Grade; totalGradePoints += course4Credit * course4Grade; totalGradePoints += course5Credit * course5Grade; decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours; int leadingDigit = (int) gradePointAverage; int firstDigit = (int) (gradePointAverage * 10 ) % 10; int secondDigit = (int) (gradePointAverage * 100 ) % 10; Console.WriteLine($"{course1Name} {course1Grade} {course1Credit}"); Console.WriteLine($"{course2Name} {course2Grade} {course2Credit}"); Console.WriteLine($"{course3Name} {course3Grade} {course3Credit}"); Console.WriteLine($"{course4Name} {course4Grade} {course4Credit}"); Console.WriteLine($"{course5Name} {course5Grade} {course5Credit}"); Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
コードを実行し、書式設定された出力を表示するには、[実行] を選びます。
コードが想定どおりに動作していることを確認するには、アプリケーションの出力を次の出力と比較します。
English 101 4 3 Algebra 101 3 3 Biology 101 3 4 Computer Science I 3 4 Psychology 101 4 3 Final GPA: 3.35
コードによって表示される結果が異なる場合は、コードを確認し、エラーを見つけて更新する必要があります。 コードをもう一度実行して、問題が修正されたかどうかを確認します。 コードで予期される結果が得られるまで、コードの更新と実行を続けます。
重要
これまでに記述したコードは削除しないでください。 このコードを基にして次の演習を行います。