Błędny wynik przy dzieleniu

0

Witam jestem początkującym w javie i natrafiłem na taki problem mianowicie gdy dziele np dwie liczby typu float 4/2 to otrzymuje wynik 2.000000001
W C nigdy takich problemow nie było.
I teraz pytanie dlaczego tak się dzieje i jak to zmienić?

0

W C też byli takie problemy, z tym że printf umiejętnie im zaradzał. Zmień typ danych na double. Lub zmień metodę wyświetlania.

0

Z double juz probowalem i nic nie pomogło. Nie rozumiem za bardzo o co Ci chodzi z metodą wyświetlania? możesz podpowiedzieć?

0
import java.io.*;

public class test
  {
   public static void main(String[] args) throws Exception
     {
      double a=4,b=2,x;
      x=a/b;
      System.out.printf("%f\n",x);
      if(x==2) System.out.printf("dokladnie 2");
     }
  }

Wynik:2,0000code>Wynik:`2,000000
dokladnie 2

Więc podaj w jaki sposób stwierdzasz że wyszło ci nie równiutko 2?
0

Może ma starego Pentiuma :P
http://en.wikipedia.org/wiki/Pentium_FDIV_bug

0

Coś ściemniasz:

import java.io.*;

public class test
  {
   public static double dziel(double a, double b)
     {
      return a/b; 
     }

   public static void main(String[] args) throws Exception
     {
      double a=4,b=2;
      System.out.println(dziel(a,b));
      if(dziel(a,b)==2) System.out.printf("dokladnie 2");
     }
  }

Wynik:

2.0
dokladnie 2
0

Wczoraj juz bylem trochę zmeczony i sie nie dopatrzylem ze w moim programie wartortość b jest zwracana z innej metody. Nie chce wrzucać mojego kodu ponieważ robię program na zaliczenie.
Poniżej umieszczam spreparowany kod który zwraca wynik 0.33000000000000007 a nie 0,33:

 public static int ble(double k){
   int y;
       y=(int)k;

       return y;
   }
   public static double klap(double k){
   return k - ble(k);
   }
    public static void main(String[] args) {
        System.out.println(klap(2.33));
    }

}
0

To jest zupełnie normalne i wynika z tego, że rozwinięcie dwójkowe liczby 2.33 jest nieskończone, zatem komputer używa przybliżonej wartości.

0

Przeczytałeś już to, co podlinkowałem? Wszyscy czekamy, aż to zrobisz i przestaniesz się dziwić normalnym zjawiskom.

1 użytkowników online, w tym zalogowanych: 0, gości: 1