main()
{
float f=0.7;
if(0.7>f)
printf("Hi");
else
printf("Hello"):
}
当我编译这个程序时,输出结果为Hi
。即使数值相等,双容器所容纳的数字大于浮点数
有人能解释一下scenerio如何0.7>0.7
是true
?这是因为0.7
用于if语句是double
而f
是float
?
即使它是double
仍然其值是0.7
创建的差异只是在double
的情况下存储在8字节中,而在float
的情况下存储在4字节中。但是我认为,当存储在容器中的值相等时,容器的容量有多大并不重要。所以0.7
永远不会比f更大。所以根据我应该在Hello
。那么为什么Hi
是输出?
这里有数百个重复项,具有不同的浮点值。长话短说,因为'0.7'不能完全表示,并且因为'0.7'被视为'double',而不是'float',所以这两个表示略有不同,导致您看到的行为。将'0.7'改为'0.7F'使其正常工作。您不会看到具有“double”和“float”的数字的行为,例如,“0.5”,“0.25”,“0.125”等。 – dasblinkenlight
http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf强烈建议阅读,至少可以请第一页 –
解释我多一点。我只是将其值从0.7到0.5,是的,你是正确的输出出来是你好。 – user3335653