형변환 질문
미나
7700.0 이라는 double형 데이터를 long 형으로 변환하는데 변환하고 나면 7699로 데이터 소실이 발생하는데...
어떻게 해결할 방법이 없을까요?
컴파일러는 gcc 컴파일러 입니다.
double value = 7700;
(long)value 이렇게 변환한거구요
값 변환하는건 value를 매겨변수로 넘겨줘서 long형 리턴값으로 받는데
함수 안에는 (long)value 딱 이렇게만 코딩되어 있구요
해결 방법 아시는분은 답변좀 부탁드리겠습니다. ㅠ.ㅠ
-
엘핀
흠... 제가 해볼때는 특정 값이 들어왔을 때... 값 소실이 있었는데...
이유를 모르겠네요;;
값 소실 발생하는 값도 특정값이 있는것 같았구요
연산하는거 하나도 없이... double형 값 매개변수로 받아와서
return (long)Value; 딱 이 한줄이었는데...
됐다 안됐다 이런게 아니고 7700.00 이란 값이 들어오면 무조건 값 소실이 발생했는데
double형이 소수점 이하 16번째 자리부터 신뢰할수 없는 데이터라서
거기서 연 -
예린
네 gcc구요.우분투입니다. 이상없네요.
-
전갈자리
gcc에서 테스트 해보신건가요?
비주얼 스튜디오에서는 저도 테스트 해봤는데 비주얼 스튜디오에서는 정상적으로 나옵니다. -
아이뻐
테스트 해보니 전혀 문제가 없네요. 먼가 착각일 듯하네요.
-
간조롱
자문자답... 갠적인 추측인데 이게 실수형이라 소수점 16번째 정도부터 연산이 잘못되서 1씩 쭉 깎아먹어서
결국 정수형 부분까지 영향이 미치는건데...
그래서 0.0000000001을 더해준 후에 long형으로 변환해주니... 해결 됐습니다.
금융권도 아니고... 설마 소수점 이하 10번째 금액까지... 사용하진 않겠죠? ㅡ.ㅡ;;