Рубрики

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

Десятичный эквивалент 1/3 равен 0,33333333333333…. Число бесконечной длины потребовало бы бесконечной памяти для хранения, и у нас обычно есть 4 или 8 байтов. Следовательно, числа с плавающей запятой хранят только определенное количество значащих цифр, а остальные теряются. Точность числа с плавающей запятой определяет, сколько значащих цифр оно может представлять без потери информации. При выводе чисел с плавающей запятой, cout имеет точность по умолчанию, равную 6, и после этого усекает все, что угодно.

Ниже приведены несколько библиотек и методов, которые используются для обеспечения точности чисел с плавающей запятой в C ++:

пол():

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

// C ++ программа для демонстрации работы floor ()
// в 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 округляет заданное значение до ближайшего целого числа, которое больше заданного значения.

// C ++ программа для демонстрации работы ceil ()
// в C / C ++
#include<bits/stdc++.h>

using namespace std;

  

int main()

{

    double x = 1.411, y = 1.500, z = 1.611;

    cout << ceil(x) << endl;

    cout << ceil(y) << endl;

    cout << ceil(z) << endl;

  

    double a = -1.411, b = -1.500, c = -1.611;

    cout << ceil(a) << endl;

    cout << ceil(b) << endl;

    cout << ceil(c) << endl;

    return 0;

}

Выход:

2
2
2
-1
-1
-1

TRUNC ():

Trunc round удаляет цифры после десятичной точки.

// C ++ программа для демонстрации работы trunc ()
// в 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 ++ программа для демонстрации работы round ()
// в 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 ++ программа для демонстрации работы setprecision ()
// в 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 и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

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

0.00 (0%) 0 votes