아래 값의 결과를 확인해 보면
double value1 = 0.01;
double value2 = 0.05;
double resultValue = value1 + value2;
0.060000000000000005 결과가 나오게됩니다.
double 로 표현하게되면 부동소수점은 근사치를 나타내는거라 정확하지 않습니다.
참고 : https://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&pageno=0&wid=10872&rssMode=1&wtype=0
이를 해결하기 위한 방법은 아래와 같습니다.
double 을 사용하지 않고 decimal 을 사용합니다.
decimal value1 = 0.01m;
decimal value2 = 0.05m;
decimal resultValue = value1 + value2;
아래는 double 타입을 쓰면서 사용하는 방법입니다.
double value1 = 0.01;
double value2 = 0.05;
decimal calValue1 = (decimal)value1;
decimal calValue2 = (decimal)value2;
double resultValue = (double)(calValue1 + calValue2);
double value1 = 0.01;
double value2 = 0.05;
double resultValue = Convert.ToDouble((value1 + value2).ToString());
double/float 형으로 계산을 하는 경우는 주의를 해야할것 같습니다 자칫 잘못된 결과가 나올수 있기 때문입니다.
C# 뿐만 아니라 모든 언어(IEEE 754따르는언어)에 해당된다고 합니다.
Naver 사이트 열어 특정 단어 검색하기 (0) | 2024.08.22 |
---|---|
Quartz Scheduler misfire 처리하기 - 즉시 실행 방지 (0) | 2024.08.21 |
xml 파일 로드 시 에러 : hexadecimal value 0x0C, is an invalid character. (0) | 2024.07.14 |
WordPress API - Post 수정하기 (0) | 2024.07.07 |
WordPress API - Post 내용 가져오기 (0) | 2024.07.07 |