📜  C++中浮点数的精度(floor(),ceil(),trunc(),round()和setprecision())

📅  最后修改于: 2021-05-25 21:28:04             🧑  作者: Mango

1/3的十进制等效值为0.33333333333333…。无限长度的数字将需要无限的内存来存储,并且我们通常有4或8个字节。因此,浮点数仅存储一定数量的有效数字,其余的将丢失。浮点数的精度定义了它可以代表多少个有效数字而不会丢失信息。输出浮点数时,cout的默认精度为6,此后它会截断任何内容。

下面给出了一些库和方法,用于在C++中为浮点数提供精度:

地面():

Floor将给定值四舍五入为小于给定值的最接近的整数。

// C++ program to demonstrate working of floor()
// in C/C++
#include
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++ program to demonstrate working of ceil()
// in C/C++
#include
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舍入会删除小数点后的数字。

// C++ program to demonstrate working of trunc()
// in C/C++
#include
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) <

输出:

1
1
1
-1
-1
-1

圆形的():

将给定数字四舍五入到最接近的整数。

// C++ program to demonstrate working of round()
// in C/C++
#include
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
using namespace std;
  
int main()
{
    double pi = 3.14159, npi = -3.14159;
    cout << fixed << setprecision(0) << pi <<" "<

输出:

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附加到浮点数以匹配用户提到的精度。

还存在其他方法来提供浮点数的精度。上面提到的是在竞争编码过程中为浮点数提供精度的几种最常用方法。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”