none
C# 소수점 자리 곱셈 결과 질문 (Banker's Round 관련) RRS feed

  • 질문

  • 안녕하세요.

    아시다시피 C#에서 기본적인 Math.Round 방식은 Banker's Round를 사용합니다. 그런데 소수점 계산에서 이슈가 생겨 질문드립니다.



    아래 첨부파일 캡쳐본에서 보다시피 

    1) 4.445의 소수점 2자리 Round 값은 4.44이고, 5.545의 소수점 2자리 Round 값은 5.54 입니다 (Banker's round)

    2) 그런데 55.45 * 0.1을 Round 하니 5.55가 나와 이상해서 곱셈을 해보니 아래와 같은 결과들이 나옵니다. (소수점자리 아래쪽에 찌꺼기 숫자들이 들어가면서 반올림이 올림이 되는 현상)

    44.45 * 0.1 = 4.445

    66.45 * 0.1 = 6.6450000000000005

    33.45 * 0.1 = 3.3450000000000006

    1 * 0.1 = 0.1

    1.1 * 0.1 = 0.1100000000000001

    곱셈에서 이 현상을 제거하려면 소수점 자리 이하를 자르거나 하는 방안이 최선인지 아니면 곱셈을 적용하는 방식이 달라져야 하는지 질문드립니다. 

    2020년 10월 19일 월요일 오전 5:57

모든 응답