Comparing float and double

后端 未结 3 655
独厮守ぢ
独厮守ぢ 2020-12-02 00:51
#include 
int main(void){
    float a = 1.1;
    double b = 1.1;
    if(a == b){
        printf(\"if block\");
    }
    else{
        printf(\"else b         


        
3条回答
  •  不知归路
    2020-12-02 01:31

    This is because 1.1 is not exactly representable in binary floating-point. But 1.5 is.

    As a result, the float and double representations will hold slightly different values of 1.1.

    Here is exactly the difference when written out as binary floating-point:

    (float) 1.1 = (0.00011001100110011001101)₂
    (double)1.1 = (0.0001100110011001100110011001100110011001100110011010)₂
    

    Thus, when you compare them (and the float version gets promoted), they will not be equal.

提交回复
热议问题