73
대신 a1=72
이 (끔찍한) C++ 코드 스 니펫으로 표시되는 이유는 무엇입니까? 이 예에서 다음 0.73
낮은 그것에 가까운 숫자로 반올림되도록캐스팅 변경 값이 이상하게
#include <iostream>
#include <string>
using namespace std;
int main (int argc, char* argv[])
{
double a = 136.73;
unsigned int a1 = (100*(a-(int)a));
cout << (a-(int)a) << endl; // 0.73
cout << 100*(a-(int)a) << endl; // 73
cout << a1 << endl; // 72 !
}
답변은 정밀도와 관련이 있어야합니다. 전에 여러 번 물었다. – iammilind
IEEE754 부동 소수점 숫자의 이진 표현과 10 진수 근사에 관한 고유 한 제한에 대해 알고 계십니까? – fredoverflow