Точность чисел с плавающей запятой в C ++ (floor (), ceil (), trunc (), round () и setprecision ())

Опубликовано: 4 Декабря, 2021

Десятичный эквивалент 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 ():

Ceil округляет заданное значение до ближайшего целого числа, которое больше заданного значения.

Выход:

 2
2
2
-1
-1
-1

trunc ():

При округлении среза удаляются цифры после десятичной точки.
// 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 ():

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, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .