Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131

    [C/C++] Calcolo preciso tra interi a 64 bit

    Devo moltiplicare un numero per una frazione.

    Il numero è senza segno a 64 bit.
    La frazione è composta da due interi senza segno a 64 bit. Il numeratore è sempre minore o uguale del denominatore.

    Normalmente farei:


    (n * numeratore) / denominatore


    Ma il prodotto tra numeratore e n va quasi sempre in overflow sbagliando il calcolo.

    Non posso trasformare i due numeri in double perchè la sua mantissa è di 52 bit e quindi perdo precisione.

    Senza dover implementare numeri a 128 bit, per questo specifico calcolo potrei usare qualche trucchetto secondo voi?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,461
    Potresti dividere n per il denominatore e poi moltiplicarlo per il numeratore ...

    P.S. Usi Windows ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Potresti dividere n per il denominatore e poi moltiplicarlo per il numeratore ...
    Se prendo un caso specifico:

    n = 4
    numeratore = 500
    denominatore = 1000

    (n / denominatore) mi da zero annullando il calcolo

    Si uso windows

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,461
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Interessante

    Grazie mille

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.