python float值和c float值有什么区别?

MAN*_*K C 1 c python

我正在用两种不同的语言来回答同样的问题。得到了不同的结果。需要帮助以了解为什么会这样吗?

我用python编写了相同的代码,得到的结果与C预期的结果不同。

代码1:

{
  float f = 0.1;
  if (f == 0.1)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}

Run Code Online (Sandbox Code Playgroud)

代码2:

f = float()
f = 0.1
if (f == 0.1):
    print("YES")
else:
    print("NO")
Run Code Online (Sandbox Code Playgroud)

两者必须提供与否相同的输出。但是只有C给出了预期的输出,而Python给出的是YES。

Dan*_*iel 9

在您的C代码中,将float 0.1与double 0.1 进行比较,其中float值首先转换为double,由于精度有限0.10000000149011612,该值与double值不同0.1

在Python float中内部与doubleC中相同。double 0.1与double 0.1相同。

因此,Python提供了预期的输出,YES而C提供了不太明显的输出NO