Signori....ho un problema

il seguente codice:

function Residuo(){

var ResPrev;
var ImpMasPre;
var ImpEff;

ResPrev = 0;
ImpMasPre = 0;
ImpEff = 0;

ImpMasPre = parseFloat(document.ModificaOrd.TxImpMasPre.value) ;
ImpEff = parseFloat(document.ModificaOrd.TxImpEff.value);

ResPrev = ImpMasPre - ImpEff;



document.ModificaOrd.TxResPrev.value = ResPrev;

}


come risultato mi da:

10000 - 9348.65 = 651.3500000000004

da dove spuntano quegli 0? Dovrebbe darmi solo 651.35 no?
Mi è sfuggito qualcosa nel codice?