La funzione floor è proprio quella che mi serve. Non sapevo come si chiamasse.
Comunque, io ho

codice:
    int diff;
    double rad;

    //il diff lo calcolo e risulta corretto
    rad=(double)sqrt(diff);
    printf("diff=%d rad=%d\n", diff, rad); //qui stampa diff e rad
La printf finale mi da un diff esatto, ma rad risulta sballatissimo, addirittura negativo.