연습 - 10진수 출력 형식 지정

완료됨

이 연습에서는 최종 GPA를 계산하고 콘솔 출력을 수정하여 원하는 보고 형식을 달성합니다. GPA는 총 크레딧 시간의 합계로 나눈 총 성적 포인트의 합계와 같습니다.

최종 GPA 계산

  1. .NET 편집기에서 과정 정보를 표시하는 데 사용되는 Console.WriteLine() 문을 찾습니다.

  2. 이전 연습에서 다음 코드를 제거합니다.

    Console.WriteLine($"{totalGradePoints} {totalCreditHours}");
    

    값이 올바른지 확인했으므로 이 줄은 더 이상 필요하지 않습니다.

  3. Console.WriteLine() 문 위에 빈 코드 줄을 만듭니다.

  4. 만든 빈 코드 줄에서 최종 GPA를 저장할 변수를 초기화하려면 다음 코드를 입력합니다.

    decimal gradePointAverage = totalGradePoints/totalCreditHours;
    
    
  5. 잠시 시간을 내어 나누는 데이터 형식을 고려하세요.

    나누기 계산 결과를 10진수 값으로 만들려면 피제수 또는 제수가 10진수 형식(또는 둘 다)이어야 합니다. 계산에서 정수 변수를 사용하는 경우 캐스트 연산자를 사용하여 정수를 10진수로 일시적으로 변환해야 합니다.

  6. 나누기에서 10진수 값을 검색하려면 다음과 같이 코드를 업데이트합니다.

    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    
  7. 마지막 Console.WriteLine() 문으로 이동하여 마지막 문 다음에 새 빈 코드 줄을 만듭니다.

  8. 최종 GPA를 표시하려면 다음 코드를 입력합니다.

    Console.WriteLine($"Final GPA: {gradePointAverage}");
    
  9. 결과를 보려면 실행을 선택합니다.

    애플리케이션의 출력을 다음 출력과 비교합니다.

    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 값을 조작하여 세 자리만 표시합니다.

궁극적으로 GPA의 첫 번째 숫자인 소수점을 표시하고 그 뒤에 10진수 뒤의 처음 두 자리를 표시하려고 합니다. 변수를 사용하여 선행 및 후행 숫자를 각각 저장한 다음 Console.WriteLine()을 사용하여 함께 인쇄하여 이 형식을 얻을 수 있습니다. 배운 수학 연산을 사용하여 선행 및 후행 숫자를 추출할 수 있습니다.

참고 항목

개발자 과정을 계속 진행하면서 데이터에 서식을 자동으로 적용할 수 있는 기본 제공 작업을 검색합니다. 이제 지금까지 학습한 내용을 강화할 수 있는 좋은 기회입니다.

  1. Console.WriteLine() 문의 맨 위로 이동합니다.

  2. Console.WriteLine() 문 위에 빈 코드 줄을 만듭니다.

  3. 만든 빈 코드 줄에서 GPA의 선행 숫자를 저장할 변수를 초기화하려면 다음 코드를 입력합니다.

    int leadingDigit = (int) gradePointAverage;
    
    

    10진수에서 선행 숫자를 추출하려면 이를 정수 값으로 캐스팅합니다. 분수 값을 캐스팅해도 결과가 반올림되지 않으므로 간단하고 신뢰할 수 있는 메서드입니다. 즉, GPA가 2.99인 경우 10진수 값을 int로 캐스팅하면 2가 됩니다.

  4. 10진수점 이하 처음 두 자리를 저장할 변수를 초기화하려면 다음 코드를 입력합니다.

    int firstDigit = (int) (gradePointAverage * 10) % 10;
    

    이 작업의 전반부에서는 소수점을 한 자리 오른쪽으로 이동하고 정수로 변환합니다. 후반부에서는 나머지 또는 모듈로 연산자를 사용하여 10으로 나눈 나머지를 얻으며, 이는 정수의 마지막 숫자를 분리합니다. 예를 들면 다음과 같습니다.

    gradePointAverage = 2.994573을(를) 가정합니다. 그런 다음 이러한 값에 대한 작업을 수행하면 다음 단계가 실행됩니다.

    int firstDigit = (int) (2.994573 * 10) % 10;
    int firstDigit = 29 % 10;
    int firstDigit = 9;
    

    그리고 firstDigit의 결과 값은 9입니다.

    다음으로 동일한 작업을 적용하여 두 번째 숫자를 찾습니다.

  5. 새 빈 코드 줄에서 다음 코드를 입력합니다.

    int secondDigit = (int) (gradePointAverage * 100 ) % 10;
    

    이 줄에서는 10진수 두 위치를 이동하고 modulo 연산자를 사용하여 마지막 숫자를 찾습니다.

  6. 최종 GPA 출력을 수정하려면 다음과 같이 마지막 Console.WriteLine() 문을 업데이트합니다.

    Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
    

작업 결과 확인

이 작업에서는 코드를 실행하고 출력이 올바른지 확인합니다.

  1. 코드가 다음과 유사한지 확인합니다.

    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}");
    
  2. 코드를 실행하고 형식이 지정된 출력을 표시하려면 실행을 선택합니다.

  3. 코드가 예상대로 작동하는지 확인하려면 애플리케이션의 출력을 다음 출력과 비교합니다.

    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
    

    코드가 다른 결과를 표시하는 경우 코드를 검토하여 오류를 찾고 업데이트해야 합니다. 코드를 다시 실행하여 문제가 해결되었는지 확인합니다. 코드가 예상 결과를 생성할 때까지 코드를 계속 업데이트하고 실행합니다.

중요

지금까지 작성한 코드를 삭제하지 마세요. 다음 연습에서 이 코드를 기반으로 빌드합니다.