11 세대 R2 오라클 DB 인스턴스의 NUMBER (12,3) 필드 번호를 기억 271.448오라클 11g는 -> Oracle 데이터 클라이언트 -> 프로 * C 프로그램 배정도 표현
그것으로 커서로부터 페치 은 Pro * C (버전 11.1.0.6)의 32 비트 변수입니다. .c 파일을 컴파일하는 데 Visual Studio 2010을 사용하는 사전 처리 된 C 프로그램이 사용되었습니다.
는 인쇄하기는 271.448가 fprintf를하고 "%의 3.14f"의 형식 지정자와의 이중 변수로 인출 된 후 즉시 (표준 출력) 제공합니다 271.44800000000004
다음 작업을 수행 할 경우 반면 :
to_char (cast (271.448 as binary_double), '999.99999999999999')를 선택하십시오. from dual;
마찬가지로 1.하지만, 숫자 리터럴이 아닌 해당 행/필드를 참조하십시오.
to_char (to_binary_double (271.448), '999.99999999999999')를 선택하십시오. from dual;
마찬가지로 3. 그러나 숫자 행 리터 이 아닌 해당 행/필드를 참조하십시오.
은 % 3.14f로 표준 출력이 아닌 프로 * C를 테스트 C 프로그램 및 인쇄에 두 번 직접지정 271.448
"지정
사용 http://www.binaryconvert.com/convert_double.html 전환을 할 수.
나는 1 271.44799999999998) 도착
오라클 DB와 Pro * C/C의 불일치는 아니지만 다소 부정확 한 표현을 기대했습니다.
Google과 몇 시간 만에 좀 더 지식이 많았지 만 내 특정 문제는 현명하지 않았습니다. 누군가 내가 무엇을 놓치고 있는지 또는 무슨 일이 일어 났는지에 대해 가르 칠 수 있습니까?
동의, 그것은 모호 : 우리는 검색 엔진의 시대에 살고 좋은 일이 - 나는 대답은 이런 종류의를 제공하는 사람이 아니에요. 좀 더 간결하게 : 오라클에서 Pro * C를 통해 C 이중으로 271.448 값을 가져 오면 271.44800000000004 으로 나옵니다. '이중처럼'표현을 통해 다른 방식으로 보면 항상 일관되게 나타납니다. 271.44799999999998. –