Invece di convertire un decimale arbitrario in una frazione esatta (qualcosa come 323527/4362363), sto cercando di convertire solo in comune, facilmente distinguibile (in termini di leggibilità) quantità come 1/2, 1/4, 1/8 ecc.Algoritmo ottimizzato per la conversione di una cifra decimale in una frazione "carina"
Oltre a utilizzare una serie di confronti if-then, inferiore/uguale a ecc., esistono tecniche più ottimizzate per eseguire questa operazione?
Modifica: Nel mio caso particolare, le approssimazioni sono accettabili. L'idea è che 0.251243 ~ 0.25 = 1/4 - nel mio caso di utilizzo, è "abbastanza buono", con quest'ultimo più preferibile per la leggibilità umana in termini di un indicatore rapido (non usato per il calcolo, usato solo come numeri di visualizzazione).
La tua domanda è vaga. Come definisci la leggibilità umana? E ancora più importante, cosa succede se non esiste una forma equivalente leggibile dall'uomo? Consentite approssimazioni? Personalmente non vedo alcun modo semplice per scrivere il tuo esempio, 323526/4362363, in forma leggibile dall'uomo senza ricorrere all'approssimazione. Le approssimazioni –
sono accettabili - l'accuratezza decimale di 4 cifre è molto più che sufficiente – ina
, tuttavia c'è qualcos'altro in "leggibile", cioè solo la lunghezza di entrambi i numeri. Generalmente le frazioni della forma "1/x" sono * facili * ma "4/85" è semplicemente strana e sarebbe meglio espressa come "1/41". Ovviamente, la famiglia "1/x" funziona bene solo per numeri inferiori a 0,5 e approssimando 0.4 usando significa una grande perdita ... forse che una rappresentazione percentuale sarebbe adeguata? –