Questo è l'algoritmo:
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 + ")";
}
Quando richiami la funzione passi i seguenti parametri:
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ì:
codice:
trace(binarioNonIntero(2, 0.4, 10));
il risultato del trace:
0.011001100 * 2(-1)
Il (-1) indica l'esponente. (non sapevo come metterlo come apice!
)