Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 부동 소수점 숫자의 정밀도(floor(), ceil(), trunc(), round() 및 setprecision())

<시간/>

부동 소수점 숫자의 정밀도 부동 소수점 숫자가 소수점 이하 값을 보유할 수 있는 정확도입니다.

예를 들어 10/6 =1.6666666... ​​여기에는 무한한 메모리 공간을 저장할 수 있는 반복 소수점이 있습니다.

따라서 이러한 경우 메모리 오버플로를 방지하기 위해 컴파일러는 정밀도 제한을 숫자로 설정합니다. C++의 부동 소수점 값의 경우 이 정밀도는 6-7자리로 설정되며, 소수점 이하 자릿수가 반복되면 값을 버립니다.

따라서 이 폐기가 발생할 때 큰 손실을 피하기 위해 정밀도를 지원하는 메서드와 라이브러리가 부동 소수점 값입니다. 여기에서 논의할 것입니다.

바닥()

floor() 함수는 숫자보다 작은 가장 가까운 정수 값으로 숫자를 반올림하는 내림 함수입니다.

항상 float 숫자의 정수 부분보다 하나 작은 정수 값을 반환합니다.

라이브러리:math.h

예시

#include<iostream>
#include<math.h>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
   cout<<"Values are : \n";
   cout<<"Number 1 : "<<floor(number1)<<endl;
   cout<<"Number 2 : "<<floor(number2)<<endl;
   cout<<"Number 3 : "<<floor(number3)<<endl;
   cout<<"Number 4 : "<<floor(number4)<<endl;
   return 0;
}

출력

Values are :
Number 1 : 0
Number 2 : 234
Number 3 : -4
Number 4 : -1

천장()

ceil() 함수는 숫자보다 큰 가장 가까운 정수 값으로 숫자를 반올림하는 반올림 함수입니다.

항상 float 숫자의 정수 부분보다 하나 더 큰 정수 값을 반환합니다.

라이브러리:math.h

예시

#include<iostream>
#include<math.h>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
   cout<<"Values are : \n";
   cout<<"Number 1 : "<<ceil(number1)<<endl;
   cout<<"Number 2 : "<<ceil(number2)<<endl;
   cout<<"Number 3 : "<<ceil(number3)<<endl;
   cout<<"Number 4 : "<<ceil(number4)<<endl;
   return 0;
}

출력

Values are :
Number 1 : 1
Number 2 : 235
Number 3 : -3
Number 4 : -0

둥근()

round() 함수는 숫자보다 크거나 작을 수 있는 가장 가까운 정수 값으로 숫자를 반올림하는 반올림 함수입니다.

부동 소수점 수의 정수 부분보다 하나 더 많거나 적을 수 있는 정수 값을 항상 반환합니다.

라이브러리:math.h

예시

#include<iostream>
#include<math.h>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
   cout<<"Values are : \n";
   cout<<"Number 1 : "<<ceil(number1)<<endl;
   cout<<"Number 2 : "<<ceil(number2)<<endl;
   cout<<"Number 3 : "<<ceil(number3)<<endl;
   cout<<"Number 4 : "<<ceil(number4)<<endl;
   return 0;
}

출력

Values are :
Number 1 : 1
Number 2 : 235
Number 3 : -3
Number 4 : -0

정밀도()

setprecision() 함수는 소수점 이하 n자리까지 정확한 flaot 값을 반환합니다. N은 setprecision 함수에 전달된 매개변수입니다.

기능을 위해 fixed를 사용합니다.

라이브러리: iomanip

예시

#include<iostream>
#include<iomanip>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
   cout<<"Nubmer 1 correct upto 0 decimals "<<fixed<<setprecision(0)<<number1<<endl;
   cout<<"Nubmer 2 correct upto 1 decimals "<<fixed<<setprecision(1)<<number2<<endl;
   cout<<"Nubmer 3 correct upto 4 decimals "<<fixed<<setprecision(4)<<number3<<endl;
   cout<<"Nubmer 4 correct upto 3 decimals "<<fixed<<setprecision(3)<<number4<<endl;
}

출력

Nubmer 1 correct upto 0 decimals 0
Nubmer 2 correct upto 1 decimals 234.6
Nubmer 3 correct upto 4 decimals -3.3113
Nubmer 4 correct upto 3 decimals -0.913