|
글의 오류
마이클플리님이 쓰신 글의 코드는 C / C++에서 허용하는 문법으로 정상적으로 컴파일은 된다.
단정도 부동소수점과 배정도 부동소수점의 유효범위와 구현 메카니즘에 대해 알지 못하셨을 뿐이다.
마이클 플리님이 말씀하신 대로 저렇게 코드를 작성하면, 소숫점 아랫자리에 정확한 값이 들어가지 않는다.
혹시 라는 문장에서 본인이 알지 못하는 지식에 대한 질의를 한 것으로, 글의 오류는 없었다고 본다.
하지만 Lyn님은 글의 오류라는 표현과 함께 까칠한 답변을 날리셨다. 비록, 조각난 지식은 담으셨을지라도.
그러므로 Lyn님의 글이 오류를 범하고 있다고 생각된다.
Lyn 님이 쓰신 글 :
: 글의 오류
:
: 1. 2진수에서 123.12 는 표기 불가능한 숫자이므로 대입시 오차가 발생한다. 즉 dTemp 에 들어 있는 숫자도 123.12 가 아니다.
:
: 2. float 의 유효자리수는 기껏해야 6자리 내외이므로 123.12000275 는 유효자리만 계산해서 123.120 으로 봐야한다. 즉 둘은 같은 숫자라고 봐도 무방하다.
:
: 3. 8byte의 데이터를 4byte에 넣는것은 애시당초 불가능하다.
:
: 마이클플리 님이 쓰신 글 :
: : double dTemp = 123.12 ;
: : float fTemp = (float)dTemp ;
: :
: : 이런식으로 하니까 fTemp 가 123.12000275 으로 입력되어.
: : 값이 밑에가 깔끔하게 안들어가더군요...
: :
: : 혹시 안전하게 double에서 float형태로 변환 하는 방법이 있을까요?
: :
: : 미리 감사드리겠습니다.
|