我在维基百科上偶然发现了以下示例(http://en.wikipedia.org/wiki/Type_conversion#Implicit_type_conversion)。
他们的解释是:“当i_value与f_value进行比较时,会发生隐式转换将i_value转换为float类型,这种转换会丢失精度,导致被比较的值不同。”
这不对吗?如果i_value被转换为float,那么两者都会有相同的精度损失,它们应该是相等的。 所以i_value必须转换为double。
#include <stdio.h>
int main()
{
int i_value = 16777217;
float f_value = 16777217.0;
printf("The integer is: %i\n", i_value); // 16777217
printf("The float is: %f\n", f_value); // 16777216.000000
printf("Their equality: %i\n", i_value == f_value); // result is 0
}
他们的解释是:“当i_value与f_value进行比较时,会发生隐式转换将i_value转换为float类型,这种转换会丢失精度,导致被比较的值不同。”
这不对吗?如果i_value被转换为float,那么两者都会有相同的精度损失,它们应该是相等的。 所以i_value必须转换为double。
1
表示相等。 - Kerrek SBf
或类型更改为double
很感兴趣——在所有情况下,我都得到了1
... - Kerrek SB