在c中添加浮点值

时间:2015-07-23 12:48:06

标签: c floating-point

为什么即使在添加0.1?

之后f也为0.0
#include <stdio.h>

int main()
  {
    float f=0.0f;
    f = f + 0.1f;
    printf("f %f \n",&f);
    return 0;
  }

很抱歉,我搞砸了原来的问题

为什么这两个值不是?这是因为精确。 对不起,我必须在这里提出这个问题因为我被阻止了我无法提出更多问题

#include <stdio.h>

int main()
{
    float f=0.0f;
    int i;

    for(i=0;i<10;i++)
          {f = f + 0.1f; }

    if(f == 1.0f)
            printf("f is 1.0 \n");
    else
            printf("f %f is NOT 1.0\n",f);

    return 0;
}

2 个答案:

答案 0 :(得分:1)

 printf("f %f \n",f);

提供正确的输出。见这里 - https://ideone.com/158Zbv

打印地址printf(" %p \n",&f);即可。

您的printf语句将在何处提供未定义的行为。

关于你的第二个代码 - 您可以重写这样的if条件 -

if(f>0.99f && f<1.01f)

这样它就能为您提供正确的输出 - https://ideone.com/kARx3A

修改

虽然添加f的程序值不完全是1.0f,但它可能有一些不同的值,当我们看到它带有更多小数位的值时,它与1.0f略有不同这就是为什么你的代码总是转到其他部分。

在此处查看f每次迭代时的值https://ideone.com/wJ7u1R

答案 1 :(得分:0)

您正在使用&amp;打印变量f的地址操作员,删除此&amp;操作