Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281

    Contare il numero di cifre dopo la virgola di un double in C/C++

    Qualcuno sa se esiste una funzione ke conti il numero d cifre di un qualsiasi valore double ke do in input (o anke solo quelle dopo la virgola)
    Io stò provando a realizzarla ma ancora senza risultati
    come compilatore uso il borland builder 6.0

    io ho provato così ma c'è un problema:

    il codice è questo:
    for (v = 1, val -= (int)val; val != 0.0; v++, cifre++, val = (val * 10) - (int)(val * 10))
    il problema è che i double nn vengono memorizzati come li scriviamo noi ma con un esponente e una mantissa

    io ho fatto la prova con il numero 5.15
    nel 1° ciclo ottengo 5.15 - 5 (val - (int)val) = 0.15
    0.15 != 0.0 e quindi conto (v++, cifre l'ho usata x incrementare il numero totale)
    poi a val gli assegno 1.5 - (int)1.5 = 0.5
    anke 0.5 != 0.0 e quindi conto
    il problema arriva qui
    quando faccio 5 - (int)5 m da come risultato 3.55271e-14 e quindi m sballa tutto, e questo penso xkè in C nn esiste un double formato da esponente + mantissa ke riesce a rappresentare xfettamente il numero ke io gli ho dato in input

    come posso fare??

  2. #2
    Non conosco ne` una soluzione efficiente, ne` una funzione adeguata.

    Potresti portare il numero su stringa (escludendo gli zeri finali) e ricavare le cifre decimali dalla posizione del punto. Pero` e` una SCHIFEZZA quindi mi unisco alla domanda. Cmq funziona.

    Se no penso che dovresti vedere come e` strutturato un float a basso livello .. ma non e` una buona idea, per la portabilita`.

    Nel frattempo googleggio.

    Ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    Ci avevo pensato anke io......ma x essere precisi dovrei copiare tutto il numero su stringa.....compresa la parte finale.....
    poi un double quanto può essere lungo al max? :master:

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    Ho trovato un modo x risolvere l'esercizio senza dover risolvere questo problema........cmq se qualcuno lo sa ce lo dica...potrebbe sempre servire

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.