기본적으로 나는 4 자리의 정밀도를 얻고 있으며 setprecision(6)
을 사용할 때 변수의 마지막 자리는 1/3=0.333369
과 같이 무작위로옵니다.C++에서 6 자리 정밀도의 float 값을 출력하는 방법은 무엇입니까?
0
A
답변
4
float
에는 24 자리의 이진수를 사용하여 숫자의 숫자를 저장하기 때문에 약 7 자리의 정밀도를 갖습니다. 출력과 관련하여 setprecision(6)
은 요청할 수있는 모든 작업을 수행합니다.
비슷한 값을 가진 두 개의 숫자를 뺀 다음 결과를 인쇄하는 것과 같이 정확도가 떨어지는 것 같습니다. 빠른 해결책은 계산을 변경하여 double
또는 long double
을 사용하는 것입니다. 그러나 부동 소수점 결과의 정밀도를 보장하려면 FP 작동 방식을 이해하고 수식 계산 방식을 분석해야합니다.
What Every Computer Scientist Should Know About Floating-Point Arithmetic을 참조하십시오.
'float' 유형 자체가 제한적으로 보이므로 왜'double '을 사용하지 않으시겠습니까? 그러나이 유형조차도 한계가 있습니다. – fge
완벽한 예제를 제공합니다 –
@Potatoswatter IEEE 754 부동 소수점은 그처럼 작동하지 않습니다;) – fge