Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Độ chính xác số thực dấu chấm động trong C++ (floor(), ceil(), trunc(), round() và setprecision())


Độ chính xác của số thực dấu chấm động là độ chính xác đến mức nào một số thực dấu chấm động có thể giữ các giá trị sau dấu thập phân.

Ví dụ 10/6 = 1.6666666… những số này có phần thập phân lặp lại có thể chiếm không gian bộ nhớ vô hạn để lưu trữ.

Để tránh tràn bộ nhớ trong các trường hợp như vậy, trình biên dịch đặt một giới hạn độ chính xác cho số. Đối với giá trị float trong C++, độ chính xác này được đặt thành 6-7 chữ số, sau đó nếu phần thập phân lặp lại, nó sẽ loại bỏ giá trị đó.

Vì vậy, để tránh bất kỳ tổn thất lớn nào khi việc loại bỏ này xảy ra, có các phương thức và thư viện hỗ trợ độ chính xác trong giá trị float. Ở đây, chúng ta sẽ thảo luận về chúng:

floor()

Hàm floor() là hàm làm tròn xuống, làm tròn số đến giá trị nguyên gần nhất nhỏ hơn số đó.

Nó luôn trả về một giá trị nguyên nhỏ hơn một so với phần nguyên của số float.

Thư viện: math.h

Ví dụ

#include<iostream>
#include<math.h>
using namespace std;
int main() {
    float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
    cout<<"Các giá trị là : \n";
    cout<<"Số 1 : "<<floor(number1)<<endl;
    cout<<"Số 2 : "<<floor(number2)<<endl;
    cout<<"Số 3 : "<<floor(number3)<<endl;
    cout<<"Số 4 : "<<floor(number4)<<endl;
    return 0;
}

Kết quả

Các giá trị là :
Số 1 : 0
Số 2 : 234
Số 3 : -4
Số 4 : -1

ceil()

Hàm ceil() là hàm làm tròn, làm tròn số đến giá trị nguyên gần nhất lớn hơn số đó.

Nó luôn trả về một giá trị nguyên lớn hơn một so với phần nguyên của số float.

Thư viện: math.h

Ví dụ

#include<iostream>
#include<math.h>
using namespace std;
int main() {
    float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
    cout<<"Các giá trị là : \n";
    cout<<"Số 1 : "<<ceil(number1)<<endl;
    cout<<"Số 2 : "<<ceil(number2)<<endl;
    cout<<"Số 3 : "<<ceil(number3)<<endl;
    cout<<"Số 4 : "<<ceil(number4)<<endl;
    return 0;
}

Kết quả

Các giá trị là :
Số 1 : 1
Số 2 : 235
Số 3 : -3
Số 4 : -0

round()

Hàm round() là hàm làm tròn, làm tròn số đến giá trị nguyên gần nhất, có thể lớn hơn hoặc nhỏ hơn số đó.

Nó luôn trả về một giá trị nguyên có thể lớn hơn/nhỏ hơn một so với phần nguyên của số float.

Thư viện: math.h

Ví dụ

#include<iostream>
#include<math.h>
using namespace std;
int main() {
    float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
    cout<<"Các giá trị là : \n";
    cout<<"Số 1 : "<<ceil(number1)<<endl;
    cout<<"Số 2 : "<<ceil(number2)<<endl;
    cout<<"Số 3 : "<<ceil(number3)<<endl;
    cout<<"Số 4 : "<<ceil(number4)<<endl;
    return 0;
}

Kết quả

Các giá trị là :
Số 1 : 1
Số 2 : 235
Số 3 : -3
Số 4 : -0

setprecision()

Hàm setprecision() trả về giá trị float chính xác đến n chữ số thập phân. N là tham số truyền cho hàm setprecision.

Để hoạt động, nó sử dụng fixed.

Thư viện: iomanip

Ví dụ

#include<iostream>
#include<iomanip>
using namespace std;
int main() {
    float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
    cout<<"Số 1 đúng đến 0 thập phân "<<fixed<<setprecision(0)<<number1<<endl;
    cout<<"Số 2 đúng đến 1 thập phân "<<fixed<<setprecision(1)<<number2<<endl;
    cout<<"Số 3 đúng đến 4 thập phân "<<fixed<<setprecision(4)<<number3<<endl;
    cout<<"Số 4 đúng đến 3 thập phân "<<fixed<<setprecision(3)<<number4<<endl;
}

Kết quả

Số 1 đúng đến 0 thập phân 0
Số 2 đúng đến 1 thập phân 234.6
Số 3 đúng đến 4 thập phân -3.3113
Số 4 đúng đến 3 thập phân -0.913