Visualizzazione risultati 1 fino 2 di 2

Discussione: Funzione calcolo errato

  1. #1
    Guest

    Predefinito Funzione calcolo errato

    Ciao a tutti, ho questa funzione che fa semplicemente una somma e un prodotto.
    Per alcuni valori funziona per altri no, nel senso non ritorna il risultato corretto.

    Codice PHP:
    function Codia(r,c){ return ((r+c)*(r+c+1)); }
    alert(Codia(1908229752,0));
    Risultato ottenuto dalla funzione: 3641340788326211000
    Risultato calcolato da me: 3641340788326211256

    Sapreste dirmi dove sbaglio.
    Ultima modifica di hotmailpower : 24-09-2014 alle ore 09.07.20

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    In JavaScript tutti i valori numerici vengono trattati come valori in virgola mobile a doppia precisione (IEEE 754 a 64bit), per questa ragione possono avvenire approssimazioni ed altri problemi indesiderati come quello che indichi tu.
    Nel tuo caso, il prodotto 3641340788326211256 non è rappresentabile come valore numerico in JavaScript in quanto la sua rappresentazione binaria è di 62 cifre, ma nella codifica usata si possono rappresentare solo 53 cifre binarie, per questo le ultime nove cifre vengono perse.
    Per ovviare al problema possono esserci diverse soluzioni, ma per indicare la più adatta alla tua situazione è necessario sapere più dettagli. Per esempio, che numeri tratti? Quanto possono essere grandi al massimo? Sono solamente interi?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •