Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    251

    [C++] fmod impossibile?

    mod impossibile?

    ciao...

    una questione....

    <code>
    #include <stdio.h>
    #include <string.h>

    ho un problema in una funzione mod in c con numero grande.

    double val = 2002340125000740776065811182900;
    int mod = 97;

    main()
    {
    do {
    val = val-mod;
    } while (mod < val);
    printf ("%s\n", "ok");
    }
    </code>
    oppure
    <code>
    double x = 2006340125000740780065811182900;
    double y = 97;

    main()
    {
    double i, f;
    i = floor(x/y);
    f = x-i*y;
    if ((x < 0.0) != (y < 0.0))
    f = f-y;
    printf ("%g\n", f);
    system("PAUSE");
    }
    </code>
    il codice non funziona in quanto è impossibile in c avere un numero così grande.. mi viene trasformato ....

    come posso risolverlo???

    e impossibile?

  2. #2
    Se memorizzi quel numero in un double ti verrà sicuramente troncato (verrà memorizzato come qualcosa tipo 2,0063401250007 * 10^qualcosa); d'altra parte i tipi int nativi del C, nelle implementazioni più diffuse, non bastano a contenere un numero così grosso (non ci sta neanche in un intero a 64 bit), per cui molto probabilmente ti dovrai rivolgere ad apposite librerie per lavorare con interi molto grandi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    O creare una tua struttura tipo BIGDOUBLE composta da piu' double.
    Però poi devi gestirla bene
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Credo che per fare il modulo di un numero intero gli convenga semmai creare una struttura BIGINT (o qualcosa del genere) composta da più interi.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.