Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    C++ Problema per il tipo di dato da usare

    ho un problema con il fattoriale pur utilizzando un tipo di dato long long int non mi visualizza oltre il fattoriale di 20...

  2. #2
    usa unsigned long long int oppure passa all'utilizzo di http://gmplib.org/.
    Resterai stupito da quello che riesce a fare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    senza usare nessuna libreria esterna il massimo fattoriale che riesci a calcolare è quello di 173 usando double e con una grande approssimazione se vuoi andare oltre devi fare uso di librerie esterne come quelle indicate da antotan
    cogli l'attimo

  4. #4
    Originariamente inviato da c_junior
    senza usare nessuna libreria esterna il massimo fattoriale che riesci a calcolare è quello di 173 usando double e con una grande approssimazione se vuoi andare oltre devi fare uso di librerie esterne come quelle indicate da antotan

    ho già usato anche il double ma mi da gli stessi risultati!come devo aumentare la precisione??

  5. #5
    Originariamente inviato da antotan
    usa unsigned long long int oppure passa all'utilizzo di http://gmplib.org/.
    Resterai stupito da quello che riesce a fare.

    potresti spiegarmi come posso usare questa libreria...sono un pò ignorante a riguardo

  6. #6
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Originariamente inviato da c_junior
    senza usare nessuna libreria esterna il massimo fattoriale che riesci a calcolare è quello di 173 usando double e con una grande approssimazione se vuoi andare oltre devi fare uso di librerie esterne come quelle indicate da antotan
    Sei sicuro che il massimo fattoriale che si può calcolare senza utilizzare librerie esterne è quello di 173?
    173! = 3.69....*10^313
    Nemmeno con una variabile a 1024 bit riusciresti a contenere tale valore in quanto:
    (2^1024) - 1 = 1.79....*10^308


    Per calcolare il fattoriale di 20 hai bisogno semplicemente di una variabile a 64 bit.
    Prova a stampare sizeof(tua_variabile) e guarda cosa ti stampa. Se quello che ti stampa è un valore < 8 la tua variabile non può contenere 20!
    Io ho provato con una variabile di tipo long long int utilizzando dev-c++ e il risultato è corretto.
    Crestron Control Systems and AMX Control Systems Programmer

  7. #7
    Se hai una distribuzione linux, devi scompattare la tarball, posizionarti sulla cartella da console e dare:

    codice:
    ./configure
    make
    make check
    make install
    Mai compilato questa libreria in Windows ma su Google troverai sicuramente qualcosa.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    Originariamente inviato da sotoli
    Sei sicuro che il massimo fattoriale che si può calcolare senza utilizzare librerie esterne è quello di 173?
    173! = 3.69....*10^313
    Nemmeno con una variabile a 1024 bit riusciresti a contenere tale valore in quanto:
    (2^1024) - 1 = 1.79....*10^308
    no ma io non dicevo di usando il tipo di dato double...si si sono sicuro l'ho anche calcolato sul mio sistema(windows 7 64 bit)
    cogli l'attimo

  9. #9
    Originariamente inviato da sotoli
    Sei sicuro che il massimo fattoriale che si può calcolare senza utilizzare librerie esterne è quello di 173?
    173! = 3.69....*10^313
    Nemmeno con una variabile a 1024 bit riusciresti a contenere tale valore in quanto:
    (2^1024) - 1 = 1.79....*10^308
    Lui sta dicendo il massimo calcolabile con un double, che solitamente ha come range +/-1.7 * 10^+/-308. 173! comunque è nell'ordine del 10^315, il più grande fattoriale entro 1.7*10^308 è quello di 170 (intorno a 7,257415615*10^306).
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    Originariamente inviato da MItaly
    Lui sta dicendo il massimo calcolabile con un double, che solitamente ha come range +/-1.7 * 10^+/-308. 173!
    esattissimo
    cogli l'attimo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.