浮点数0.5和双0.5如何相等

时间:2017-03-02 13:18:25

标签: c

float   num = 0.5;
double num2 = 0.5;
if( num == num2)
   printf("Equal");
else
   printf("Not Equal");

怎么可能?

  1. float 0.5的二进制值为00111111 00000000 00000000 00000000
  2. double 0.5的二进制值为00111111 11100000 00000000 00000000 00000000 00000000 00000000 00000000
  3. 请逐步解释,因为我是编程新手

2 个答案:

答案 0 :(得分:1)

在比较中,float值隐式转换为double类型。

然后比较两个相同类型的

答案 1 :(得分:0)

你应该查看IEEE764 float和double定义,看看实数是如何存储的,以及浮点数和双精度数的二进制点偏移量。机器的结束也会影响事物。