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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP