准确比较C ++中float类型的两个变量

时间:2016-10-09 09:03:55

标签: c++ c++11

如何在C ++中准确地比较float类型的两个变量,一个是在声明时初始化而另一个是通过程序计算的?

当我比较两个值为0.5或0.25的变量时,程序显示所需的输出但是当我比较两个值为0.333333或0.666667的变量时,程序没有显示所需的输出。你能告诉我哪里出错了吗?请帮我写一些正确的代码。我是一名新手,向您学习将是一次很棒的经历。谢谢你的关心。 以下是包含一些输出的代码:

  1. OUTPUT 1
  2. OUTPUT 2

1 个答案:

答案 0 :(得分:0)

我的英语口语不太好,我希望你能得到我。首先,您必须了解浮点类型,变量类型有两个定义,它们是精度和范围。 浮点类型具有32位范围。 1位是符号,8位是exp,23位是尾数。所以浮点型变量的精度为2 ^ 23 = 8388608,总共7位。但一般我们使用那个或一些控制台输出只有6位精度,所以你的'a'变量是0.6666670(7位)而你的'b'变量是0.6666666(7位)。显然它们不相等。你可以尝试使用printf()函数输出它们的位限制参数,我想你可以获得它们的真正价值。我希望我能帮到你。

相关问题