Точность чисел с плавающей запятой в C ++ (floor (), ceil (), trunc (), round () и setprecision ())
Десятичный эквивалент 1/3 - 0,33333333333333…. Число бесконечной длины потребует бесконечной памяти для хранения, и обычно у нас есть 4 или 8 байтов. Следовательно, числа с плавающей запятой хранят только определенное количество значащих цифр, а остальные теряются. Точность числа с плавающей запятой определяет, сколько значащих цифр оно может представлять без потери информации. При выводе чисел с плавающей запятой cout имеет точность по умолчанию 6 и усекает все, что после этого.
Ниже приведены несколько библиотек и методов, которые используются для обеспечения точности чисел с плавающей запятой в C ++:
Floor округляет заданное значение до ближайшего целого числа, которое меньше заданного значения.
// C++ program to demonstrate working of floor()// in C/C++#include<bits/stdc++.h>using namespace std; int main(){    double x =1.411, y =1.500, z =1.711;    cout << floor (x) << endl;    cout << floor (y) << endl;    cout << floor (z) << endl;     double a =-1.411, b =-1.500, c =-1.611;    cout << floor (a) << endl;    cout << floor (b) << endl;    cout << floor (c) << endl;    return 0;} | 
Выход:
1 1 1 -2 -2 -2
Ceil округляет заданное значение до ближайшего целого числа, которое больше заданного значения.
Выход:
2 2 2 -1 -1 -1
При округлении среза удаляются цифры после десятичной точки.
// C++ program to demonstrate working of trunc()// in C/C++#include<bits/stdc++.h>using namespace std; int main(){    double x = 1.411, y = 1.500, z = 1.611;    cout << trunc(x) << endl;    cout << trunc(y) << endl;    cout << trunc(z) <<endl;     double a = -1.411, b = -1.500, c = -1.611;    cout << trunc(a) <<endl;    cout << trunc(b) <<endl;    cout << trunc(c) <<endl;    return 0;} | 
Выход:
1 1 1 -1 -1 -1
Округляет заданное число до ближайшего целого.
// C++ program to demonstrate working of round()// in C/C++#include<bits/stdc++.h>using namespace std; int main(){    double x = 1.411, y = 1.500, z = 1.611;     cout << round(x) << endl;    cout << round(y) << endl;    cout << round(z) << endl;     double a = -1.411, b = -1.500, c = -1.611;    cout << round(a) << endl;    cout << round(b) << endl;    cout << round(c) << endl;    return 0;} | 
Выход:
1 2 2 -1 -2 -2
Setprecision при использовании вместе с 'fixed' обеспечивает точность чисел с плавающей запятой до десятичных чисел, указанных в скобках setprecison.
// C++ program to demonstrate working of setprecision()// in C/C++#include<bits/stdc++.h>using namespace std; int main(){    double pi = 3.14159, npi = -3.14159;    cout << fixed << setprecision(0) << pi << " " <<npi<<endl;    cout << fixed << setprecision(1) << pi << " " <<npi<<endl;    cout << fixed << setprecision(2) << pi << " " <<npi<<endl;    cout << fixed << setprecision(3) << pi << " " <<npi<<endl;    cout << fixed << setprecision(4) << pi << " " <<npi<<endl;    cout << fixed << setprecision(5) << pi << " " <<npi<<endl;    cout << fixed << setprecision(6) << pi << " " <<npi<<endl;} | 
Выход:
3–3 3,1 -3,1 3,14 -3,14 3,142 -3,142 3,1416 -3,1416 3,14159 -3,14159 3,141590 -3,141590
Примечание. Когда значение, указанное в setprecision (), превышает количество цифр с плавающей запятой в исходном числе, к цифре с плавающей запятой добавляется 0, чтобы соответствовать точности, указанной пользователем.
Существуют и другие методы для обеспечения точности чисел с плавающей запятой. Вышеупомянутые - некоторые из наиболее часто используемых методов для обеспечения точности чисел с плавающей запятой во время конкурентного кодирования.
Эта статья предоставлена Адитьей Гуптой . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.