当前位置: 首页 > 编程笔记 >

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

詹甫
2023-03-14
本文向大家介绍C ++中浮点数的精度(floor(),ceil(),trunc(),round()和setprecision()),包括了C ++中浮点数的精度(floor(),ceil(),trunc(),round()和setprecision())的使用技巧和注意事项,需要的朋友参考一下

浮点数的精度是浮点数可以保留小数点后的值的精度。

例如10/6 = 1.6666666…这些具有重复的小数,这些小数可以占用无限的存储空间。

因此,在这种情况下,为避免内存溢出,编译器对数字设置了精度限制。对于C ++中的float值,此精度设置为6-7位,如果小数重复出现,它将丢弃该值。

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

地板()

floor()函数是向下舍入函数,可将数字四舍五入到小于该数字的最接近整数值。

它总是返回一个小于浮点数的整数部分的整数值。

库: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()函数是舍入函数,它将数字舍入为大于该数字的最接近的整数值。

它总是返回一个整数,该整数比浮点数的整数部分大一。

库: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()函数是舍入函数,可将数字舍入为最接近的整数值,该整数值可以大于或小于该数字。

它总是返回一个整数值,该整数值可以比浮点数的整数部分大/小。

库: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()函数返回flaot的值,该值是正确的,最多n个小数位。N是传递给setprecission函数的参数。

对于功能,它使用固定的。

图书馆: 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
 类似资料:
  • 为什么浮点数据类型的精度不与其大小成正比增长?例如: 正如您所看到的,的精度大约是精度的两倍,这是有意义的,因为的大小是。 但这与双精度和长双精度的情况不同,长双精度的大小是128位,是64位双精度的两倍,但其精度只多出三位!! 我不知道浮点数是如何实现的,但从理性的角度来看,仅为三位精度使用64位内存是否有意义?! 我四处搜索,但没有找到一个简单明了的答案。如果有人能解释为什么长双精度只比双精度

  • 问题内容: $a = ‘35’; $b = ‘-34.99’; echo ($a + $b); 结果为0.009999999999998 这是怎么回事?我想知道为什么我的程序不断报告奇怪的结果。 为什么PHP不返回预期的0.01? 问题答案: 因为浮点运算!=实数运算。对于一些浮子和,由不精确性引起的差异的说明是。这适用于使用浮点数的任何语言。 由于浮点数是具有有限精度的二进制数,因此存在有限数量

  • 本文向大家介绍Fortran 浮点数精度,包括了Fortran 浮点数精度的使用技巧和注意事项,需要的朋友参考一下 示例 类型的浮点数real不能有任何实数值。它们可以表示实数,最多可以包含一定数量的十进制数字。 FORTRAN 77保证了两种浮点类型,而最新的标准则至少保证了两种实数类型。实变量可以声明为 x这是默认类型的实数,并且y是比更大的十进制精度的实数x。在Fortran 2008中,十

  • 我试图控制我在字符串中添加的位数,但我无法控制它,因为我正在打印字符串数组。 但是我最终得到了一个字符串数组,如下所示: 0.050000//3.000000//... 在将浮点数添加到字符串之前,有什么方法可以控制浮点数的精度吗? (所以我可以有一个结果字符串控制一个固定数量的数字) 0.05//3.00// ...

  • 运行以下代码时,我希望收到这样的输出: 但结果如下: 欢迎任何能指导我正确使用浮点比较和正确使用setprecision的建议。

  • 在处理浮点数时,我对C#中“精度”的实际含义有些怀疑。如果逻辑性不强,而且解释太长,我提前道歉。 我知道浮点数(例如)的精度为6到9位。假设我们有下一个代码: 我在控制台里得到了确切的数字。现在,让我们使用下一个代码: 打印了一个不同的数字:,即使这个数字有9位数,这也是极限。 这是我的第一个怀疑。精度取决于数字本身还是计算机的结构? 此外,数据以位的形式存储在计算机中,在中间,我记得将数字的小数