dtostre()

che non è il dito della strega, come potrebbe essere
ma una funzione di avrlibc che dovrebbe convertire un double (e magari quindi anche solo un float) in una stringa in notazione scientifica
peccato che siccome ho regalato
a dir la verità mi “hanno regalato”, forma passiva transitiva del verbo regalare
mi hanno regalato forma normale: qualcuno mi ha donato qualcosa, io ho ricevuto…
mi hanno regalato forma passiva transitiva: qualcuno ha donato ad altri delle cose mie, io non le ho più
dicevo, siccome “ho regalato” tutte le macchine, e Zia e Nipote sono al mare, dotata barista in montagna e inganneressa giovane ha traslocato, non ho più nulla da fare
se non curarmi (e non apriamo questo discorso) e gestire un trasloco con ristrutturazione consuntiva, che significa che metto a posto le magagne mano a mano che le trovo, una goduria, voi non avete idea…
ok, però se lascio libera la casa attuale avanzo un termoremoto, che non mi servirà più in futuro
peccato che il termoremoto sia basato su nodemcu, e la funzione del dito della strega non c’è
ecco quindi che me la sto provando a scrivere
rullo di tamburi…
buio in sala
luci su di me…
Ed ora, signore e signori, è con piacere che tra poco la Direzione presenterà a voi tutti la grande attrazione di questa serata. Eccoli qua, appena tornati dalla loro tournée trionfale di tre mesi in tutta l’Europa, l’Oceania, e la Polinesia del Sud. Un bell’applauso per gli amici di Calumet City, Illinois, la Show Band di Joliet Jake ed Elwood Blues, i Blues Brothers!

Ops, scusate una vecchia registrazione, materiale d’archivio
ecco la funzione, spero che vada bene, se qualcuno mi fa il favore di aiutarmi a toglierci i bacherozzi…

char * converti(float numero, char * stringa)
{
#define accoda stringa[index++]=
    bool esponegativo = 0;
    byte index = 0;
    char esponente = 0;

    if (numero < 0)
    {
        numero = -numero;

        accoda  '-';
    }

    while (numero >= 10)
    {
        esponente++;
        numero = numero / 10;
    }

    while (numero < 1)
    {
        esponente--;
        numero = numero * 10;
    }

;

    if (numero)
    {
        {
            byte cifra =  numero;
            accoda cifra + '0';
            numero = (numero - cifra) * 10;
        }
        accoda '.';

        for (byte i = 0; i < 7; i++)
        {
            byte cifra = (int) numero % 10;
            accoda cifra + '0';
            numero = (numero - cifra) * 10;
        }
    }
    else
    {
        accoda '0';
        accoda '.';
        accoda '0';
    }

    if (esponente)
    {
        if (esponente <= 0)
        {
            esponegativo = 1;
            esponente = -esponente;
        }

        accoda 'E';

        if (esponegativo)
        {
            accoda '-';
        }

        while (esponente)
        {
            accoda esponente % 10 + '0';
            esponente = esponente / 10;
        }
    }
    else
    {
        accoda 'E';
        accoda '0';
        accoda '0';
    }

    accoda 0;
#undef accoda
    return stringa;
}