float num = 0.5;
double num2 = 0.5;
if( num == num2)
printf("Equal");
else
printf("Not Equal");
怎么可能?
00111111 00000000 00000000 00000000
00111111 11100000 00000000 00000000 00000000 00000000 00000000 00000000
请逐步解释,因为我是编程新手
答案 0 :(得分:1)
在比较中,float
值隐式转换为double
类型。
然后比较两个相同类型的 。
答案 1 :(得分:0)
你应该查看IEEE764 float和double定义,看看实数是如何存储的,以及浮点数和双精度数的二进制点偏移量。机器的结束也会影响事物。