|
else if(cc<1)
에서 else if(cc<1.0) 으로 해보심이 어떨듯....
cc가 묵시적으로 int형으로 타입 캐스팅 되어 일어 나는 일인듯....
궁금해요cc 님이 쓰신 글 :
: void BtoD() // 소수점 이하 2진수를 10진수로 바꾸는 작업
: {
: int c=0, d=1, sum=0;
: float cc, binary;
:
: cout << "2 진수를 입력해주세요 : ";
: cin >> binary;
: cout << "입력받은 2 진수 ";
: cout << binary;
: cout << "의 10 진수로 변환된 값은 : ";
:
:
:
: for(cc=binary ; cc>0 ; cc=cc-1 )
: {
:
: cout << " 10곱하기 전의 cc 값은 " << cc << endl;
: cc = cc * 10;
: cout << " 10곱하기 후의 cc 값은 " << cc << endl;
:
: if(cc>=1)
: c=1;
: else if(cc<1)
: c=0, cc=cc+1;
:
: sum += c*d;
: d*=2;
:
:
:
: }
:
: cout << sum ;
: cout << " 이다";
: cout << endl;
: cout << endl;
: cout << endl;
: cout << endl;
: }
:
:
:
:
:
:
:
: 여기서,
:
: else if(cc<1)
: c=0, cc=cc+1 부분에서
:
: cc가 0.01이 되어 1보다 작으니 1을 더해주라는 명령어인데...
:
:
:
: 1이 안더해지는것 같습니다.
:
: 왜 그런지 도저히 해석이 안됩니다.
:
:
:
: 위의 소스는 0.101과 같은 소수점 이하의 수에 대한 진수 변환인데...
:
: 10진수를 2진수로 변하는것은 맘껏 되는데,
:
: 2진수를 10진수로 변하는 것은 맘처럼 쉽게 안되네요ㅠㅠ
:
:
:
: 다들 오늘 하루도 좋은 하루 보내시고, 부디, 너무나 쉬운 부분이라고 지나쳐 가지 말아주시고
:
: 답변 좀 부탁드립니다. 꾸벅
|