간단히 말해서 부동 소수점의 반올림 오류가 계산 후 표시되고 리터럴 저장이 아닌 이유는 무엇입니까?10 진 부동 소수점 수를 2 진수로 변환
무슨 뜻입니까? 10 진수에서 2 진수로 변환 할 때 실수로 반올림 오류가 발생하여 발생하는 문제에 대해 알고 있습니다.
자바의 예는 :
double a = 10.567;
double b = 2.16;
double c = a * b;
C 대신 22.82472 다음의 값을 저장 22.824720000000003.
결과 22.82472를 double 유형의 유한 2 진수에 정확하게 저장할 수 없기 때문입니다. 그러나 어느 쪽도 10.567과 2.16을 사용할 수 없습니다 (즉 a와 b).
그러나 a 및 b 값을 인쇄하면 반올림 오류없이 정확하게 인쇄됩니다. 여기 왜 반올림 오류가 나타나지 않습니까?
즉, float 리터럴의 표현과 float 계산 결과의 표현이 어떻게 다릅니 까?
출력을 반올림하는 형식입니다. 예 : C.ToString() 함수는'.TString ("R")'.' R''을 반복하면 모든 비트가 반올림되지 않고 반환 될 때'22.824720000000003'을 반환 할 때'22.82472'를 반환합니다. –
@DmitryBychenko Java에서 문자열로 c 형식을 시도했지만 여전히 22.824720000000003을 반환합니다. –