E' tutta colpa del punto decimale!!!
Infatti se invece di

$dt = $L/2-$lb-$nm*$dl;
$Ht = $Ho-0.10*$dt;
$Hm = $Ht+0.10*$L/2;

Faccio cosìke per i calcoli è la stessa cosa!)

$dt = $L/2-$lb-$nm*$dl;
$Ht = $Ho-$dt/10;
$Hm = $Ht+($L/2)/10;

Bisogna FORZARE il tipo di dati?
In c esistono problemi del genere con le classi?