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


浮点数的精度是指浮点数可以保持小数点后数值的准确度。

例如,10/6 = 1.6666666… 这些具有循环小数,需要无限的内存空间来存储。

因此,为了避免在这种情况下内存溢出,编译器会为数字设置精度限制。对于 C++ 中的浮点值,此精度设置为小数点后 6-7 位,如果小数循环,则会丢弃该值。

因此,为了避免在丢弃发生时出现重大损失,有一些方法和库支持浮点值的精度。在这里,我们将讨论它们:

floor()

floor() 函数是一个向下取整函数,它将数字四舍五入到小于该数字的最近整数。

它始终返回一个整数,该整数比浮点数的整数部分小 1。

库:math.h

示例

 在线演示

#include<iostream>
#include<math.h>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
   cout<<"Values are : \n";
   cout<<"Number 1 : "<<floor(number1)<<endl;
   cout<<"Number 2 : "<<floor(number2)<<endl;
   cout<<"Number 3 : "<<floor(number3)<<endl;
   cout<<"Number 4 : "<<floor(number4)<<endl;
   return 0;
}

输出

Values are :
Number 1 : 0
Number 2 : 234
Number 3 : -4
Number 4 : -1

ceil()

ceil() 函数是一个向上取整函数,它将数字四舍五入到大于该数字的最近整数。

它始终返回一个整数,该整数比浮点数的整数部分大 1。

库:math.h

示例

 在线演示

#include<iostream>
#include<math.h>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
   cout<<"Values are : \n";
   cout<<"Number 1 : "<<ceil(number1)<<endl;
   cout<<"Number 2 : "<<ceil(number2)<<endl;
   cout<<"Number 3 : "<<ceil(number3)<<endl;
   cout<<"Number 4 : "<<ceil(number4)<<endl;
   return 0;
}

输出

Values are :
Number 1 : 1
Number 2 : 235
Number 3 : -3
Number 4 : -0

round()

round() 函数是一个四舍五入函数,它将数字四舍五入到最接近的整数,该整数可以大于或小于该数字。

它始终返回一个整数,该整数可以比浮点数的整数部分大 1 或小 1。

库:math.h

示例

 在线演示

#include<iostream>
#include<math.h>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
   cout<<"Values are : \n";
   cout<<"Number 1 : "<<ceil(number1)<<endl;
   cout<<"Number 2 : "<<ceil(number2)<<endl;
   cout<<"Number 3 : "<<ceil(number3)<<endl;
   cout<<"Number 4 : "<<ceil(number4)<<endl;
   return 0;
}

输出

Values are :
Number 1 : 1
Number 2 : 235
Number 3 : -3
Number 4 : -0

setprecision() 

setprecision() 函数返回浮点值的正确值,精度到小数点后 n 位。N 是传递给 setprecision 函数的参数。

它的功能使用 fixed。

库:iomanip

示例

 在线演示

#include<iostream>
#include<iomanip>
using namespace std;
int main() {
   float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
   cout<<"Nubmer 1 correct upto 0 decimals "<<fixed<<setprecision(0)<<number1<<endl;
   cout<<"Nubmer 2 correct upto 1 decimals "<<fixed<<setprecision(1)<<number2<<endl;
   cout<<"Nubmer 3 correct upto 4 decimals "<<fixed<<setprecision(4)<<number3<<endl;
   cout<<"Nubmer 4 correct upto 3 decimals "<<fixed<<setprecision(3)<<number4<<endl;
}

输出

Nubmer 1 correct upto 0 decimals 0
Nubmer 2 correct upto 1 decimals 234.6
Nubmer 3 correct upto 4 decimals -3.3113
Nubmer 4 correct upto 3 decimals -0.913

更新于:2020年2月4日

8K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.