The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Di programmazione ad alto livello
.
google unix.com



Di programmazione ad alto livello Pubblica domande su C, C + +, Java, SQL, e di altri linguaggi di programmazione qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Differenze in / var / adm / messages sundar3350 SUN Solaris 15 03-11-2009 11:23 AM
Come faccio ad avere passato HTML:: enti discrepanza su un RPM? jjinno UNIX for Dummies Domande & Risposte 2 08-07-2007 01:39 PM
Vsftp stranezza Spetnik UNIX for Dummies Domande & Risposte 7 04-28-2004 03:58 PM
NSI login discrepanza Henrik UNIX for Dummies Domande & Risposte 11 04-08-2003 10:17 AM
Su Password Oddity jacobsa UNIX for Dummies Domande & Risposte 4 05-30-2002 08:50 AM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 06-13-2009
Trones Trones is offline
Utente Registrato
  
 

Iscriviti Data: dicembre 2008
Interventi: 5
Java doppia sottrazione stranezza (non la solita differenza di arrotondamento)

Sono stato nel corso degli anni un java tutorial, e corse in qualche stranezza in questo piccolo esempio ...

Codice:
 class SqrRoot {
    public static void main(String args[]) {
        double num,sroot,rerr,resquare;
        
        for(num = 1.0; num < 100.0; num++) {
            sroot = Math.sqrt(num);
            System.out.println("Square root of " + num + " is " + sroot);
            
            // compute rounding error
            resquare = (sroot * sroot);
            rerr = num - resquare;
            System.out.println("Rounding error: num + " - " + resquare + " = " + rerr);
            System.out.println();
        }
    }
}
Il ritorno è strano - quando ho visto i risultati, ho scritto un piccolo programma che sottrarre un certo numero di letterale numeri in virgola mobile, il tutto con la normale al binario decimale bizzarria (1,002 - 1,001 \u003d .000999999997), ma quando ho eseguito quanto sopra codice, ottenere ciò che è qui di seguito:

Codice:
Square root of 1.0 is 1.0
1.0 - 1.0 = 0.0

Square root of 2.0 is 1.4142135623730951
2.0 - 2.0000000000000004 = -4.440892098500626E-16

Square root of 3.0 is 1.7320508075688772
3.0 - 2.9999999999999996 = 4.440892098500626E-16

....
Non sono sicuro se è che sto facendo qualcosa di sbagliato o che cosa sta causando esso. Ho cercato in tutto e ho trovato tutte le persone che si chiede di limitazioni hardware di aritmetica in virgola mobile. Qualsiasi aiuto sarebbe molto apprezzato.

Aggiornamento post ----- -----

Dopo aver visto che ho appena postato qui ho realizzato non è stato tenuto conto della notazione scientifica ... Boy per ora mi sento stupido
 

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 09:05 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0