전달하는 부동을 함에서는 C++표시를 변경하는 정밀도

0

질문

이것은 매우 멍청한 질문,하지만 나는 호기심을 알고 이 뒤에 이유: -면 나는 디버그에는 다음 C++코드:

void floatreturn(float i){
      //nothing
}

int main(){
    float a = 23.976;
    floatreturn(a);
    return 0;
}

모니터링 전달된 값이 나타납니다 23.9759998 을 입력 할 때 floatreturn. 결과적으로 처리 가치의 기능에서 요구하는 수동으로 조정할 정밀도입니다. 는 이유 있는 이것을 위해,어떤 방법을 피하는 것입니까?

c++ floating-point
2021-11-24 04:32:57
1

최고의 응답

0

문제는 전에 일어났 floatreturn(a);.
그것은에서 일어났 float a = 23.976;
floatreturn(a); 는 관련이 없습니다.

거기에 약 2^32 는 다양한 값 float 인코딩할 수 있습니다. 23.976 입니다 그들 중 하나하지 않습니다. 가장 가까운 encodable float 대 23.9759998...

피 값을 사용할 수 있는 정확하게 인코딩로 float 거나 허용되는 가까이-1 부속서 224

2021-11-24 16:43:03

감사 표시에 대한 링크와 chux 에 대한 간결한 대답합니다.
mv_p

그냥 하나 더 많은 교육점이 나를 왜 cout 기본적으로 정밀도의 3 수하는 경우 우리는 무단 전재지 않고 변수 설정 정밀도를 위한 출력? 나는 그것을 얻을 저장하는 부동 항상 가장 가까운 바이너리 부동 가능하며,cout 것입니다.
mv_p

@mv_p 무엇이었 정확한 출력은 당신이 본?
chux - Reinstate Monica

간단한'float x=23.976;cout<<x;'나는"23.976"
mv_p

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................