Questo è l'algoritmo:
Quando richiami la funzione passi i seguenti parametri:codice:function binarioNonIntero(base, daConvertire, cifreRappresentazione) { stringaFinale = ""; // Determinazione dell'esponente: esponente = 1; tempPerEsponente = daConvertire; while(parseInt(tempPerEsponente) == 0) { tempPerEsponente = base * tempPerEsponente; esponente--; } // Determinazione cifre cifreNumero = new array(); i = 0; while(i != cifreRappresentazione) { cifreNumero.push(parseInt(daConvertire)); daConvertire = base * (daConvertire - parseInt(daConvertire)); i++; } for(z = i; z >= 0; z--) { stringaFinale += cifreNumero[z]; } stringaFinale = stringaFinale.substr(1, cifreRappresentazione); return "0." + stringaFinale + " * " + base + "(" + esponente + ")"; }
base: La base nella quale vuoi convertire il numero.
daConvertire: Il numero non intero tra 0 e 1 (non compresi ovviamente) che vuoi convertire.
cifreRappresentazione: Il numero delle cifre che costituiscono il numero che voui veder rappresentate. Questo perchè a seconda del numero che vuoi convertire, la rappresentazione in base potrebbe risultare non finita... (per esempio 0.4 in base 2)
Fai una prova così:
il risultato del trace:codice:trace(binarioNonIntero(2, 0.4, 10));
0.011001100 * 2(-1)
Il (-1) indica l'esponente. (non sapevo come metterlo come apice!)

)
Rispondi quotando