Точность чисел с плавающей запятой в 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, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.