The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Højtstående Programmering
.
google unix.com



Højtstående Programmering Post spørgsmål om C, C + +, Java, SQL, og andre programmerings sprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Misforhold i / var / adm / messages sundar3350 Sun Solaris 15 03-11-2009 11:23 AM
Hvordan kan jeg komme forbi en HTML:: enheder uoverensstemmelse om en RPM? jjinno UNIX for dummyer Spørgsmål & svar 2 08-07-2007 01:39 PM
VSFTP særhed Spetnik UNIX for dummyer Spørgsmål & svar 7 04-28-2004 03:58 PM
NIS login uoverensstemmelse Henrik UNIX for dummyer Spørgsmål & svar 11 04-08-2003 10:17 AM
Su Password særhed jacobsa UNIX for dummyer Spørgsmål & svar 4 05-30-2002 08:50 AM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 06-13-2009
Trones Trones is offline
Registreret Bruger
  
 

Join Date: Dec 2008
Stillinger: 5
Java dobbelt subtraktion særhed (ikke den sædvanlige afrunding uoverensstemmelse)

Jeg har været igennem en java tutorial, og løb hen over nogle mærkværdige i dette lille eksempel ...

Code:
 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();
        }
    }
}
Afkastet er mærkeligt - når jeg så de resultater, jeg skrevet et lille program, der trækkes en række bogstavelig flydende komma tal, alle med en normal binær til decimal oddness (1,002 til 1,001 \u003d ,000999999997), men når jeg kører over kode, jeg får, hvad er nedenfor:

Code:
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

....
Jeg er ikke sikker på, om det er noget jeg gør forkert eller hvad der forårsager det. Jeg har søgt over det hele og alle jeg har fundet er folk spørger om den hardware begrænsninger floating point aritmetik. Enhver hjælp vil blive meget værdsat.

----- Post Update -----

Efter at have set det offentliggjort her, jeg har lige indset at jeg ikke var taget hensyn til de videnskabelige notation ... Dreng at jeg føler stum nu
  #2 (permalink)  
Old 06-14-2009
CRGreathouse CRGreathouse is offline
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 104
Yep, du fandt den. Det er bare den sædvanlige roundoff fejl, vist sig at alt for mange decimaler.
Reply

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 09:32 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0