C программа не добавляет float правильно

У меня есть метод, который выглядит так:

float * mutate(float* organism){   
    int i;
    float sign = 1;
    static float newOrg[INPUTS] = {0};

    for (i = 0;i<INPUTS;i++){
        if (rand() % 2 == 0) {
            sign = 1;
        } else {
            sign = -1;
        }
        float temp = (organism[i] + sign);
        printf("bf: %f af: %f diff: %f sign: %f sign2: %f temp: %f\n\n",
            organism[i], (organism[i] + sign), (organism[i] + sign)-organism[i],
            sign, sign+sign, temp);
        newOrg[i] = organism[i] + sign;
    }

    return newOrg;
}

когдаsign не 0 первые два"%f"s одинаковы, а 3-е равно 0, также внесение суммы в переменную не помогло. Это сбивает с толку меня! Я могу опубликовать полный код, если это необходимо.

Выход:

bf: 117810016.000000 af: 117810016.000000 diff: 0.000000 sign: 1.000000 sign2: 2.000000 temp: 117810016.000000

Ответы на вопрос(1)

Ваш ответ на вопрос