2011-10-12 8 views
1
나는 다음과 같은 예를 시도

:진수 부동 소수점 반올림

printf("%9.1a",4488.09); //Only one digits has to be printed after digital point 

4488.09 == 1 0001 1000 1000.0001011100001010001111010111000010100011110101 의 이진 표현은 0x1.1p + 12or 0x1.2p + (12)가되어야를?

이진 표현이나 1.18 + 13 표현에 대해 둥근 연산 (인쇄 중)을 수행해야한다면 어떻게 될까요? 그리고 만약 그것이 ceil()을 수행해야한다면 8은 정확히 16 진수 범위의 중간에 있습니다. ..

답변

1

소수점 이하 자릿수를 너무 작은 수로 제한하지 않는 한 이진수는 항상 손실없이 십진수로 변환 될 수 있습니다. 가수가 1.188170A3D70A4와 같고 printf()를 소수점 이하 자릿수로 제한하면 가수를 1.2로 출력해야합니다. 2 자릿수로 제한하면 1.19를 얻습니다. 3이면 1.188입니다. 4 일 경우 1.1881입니다. 등등.

+0

http://ideone.com/OT8bt –

1

예, 9.1 숫자를 printf() 할 때 반올림을 할 것입니다.

반올림하지 않으려면 낮은 비트를 제로로 할 수 있습니다.

오류는 숫자의 일부에 대해 반올림이 발생하지만 정수는 발생하지 않는다고 생각하는 것 같습니다.

테네시에서는 여기에도 가수라는 단어를 사용하지 않습니다. 그러나 "분수 부분"을 사용합니다

관련 문제