gpt4 book ai didi

c - 在c中添加浮点值

转载 作者:行者123 更新时间:2023-11-30 21:02:13 24 4
gpt4 key购买 nike

为什么f加0.1后还是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;
}

最佳答案

 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 不同,这就是为什么您的代码总是转到 else 部分。

在这里查看 f 每次迭代的值 - https://ideone.com/wJ7u1R

关于c - 在c中添加浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com