Zadanie odejmowanie, mnozenie

0

Hej, mam zadanie do przeliczania i w pewnym momecie musze odjac pewne liczby i robie to tak (fragment wyciety z programu )

 
class Liczenie {

    private StringBuffer str1 = new StringBuffer();

    Liczenie() {};
     public void z10Ul(int cel, int ul) {

        int index = 0;
        String str = "0." + ul;
        float i;

        float l = Float.parseFloat(str);

        while (l != 0 && index < 50) {
            l = l * cel;

            str = String.valueOf(l);

            if (str.charAt(1) == '.') {
                i = Float.parseFloat(str.substring(0, 1));

            } else {
                i = Float.parseFloat(str.substring(0, 2));
            }
            System.out.print("L=" + l + "-" + i + " = ");
            l = l - i;
            System.out.println(l);
            str1.append(i);

            index++;
        }

    }

}

public class Test {

    StringBuffer str1 = new StringBuffer();

    public static void main(String[] args) {

        Liczenie l = new Liczenie();

        l.z10Ul(6, 23);
    }

}


wlasnie dla tych danych output to:
L=1.38-1.0 = 0.38
L=2.28-2.0 = 0.27999997 // BLAD ODEJMOWANIA, NIE WIEM Z CZEGO ON WYNIKA ;)
L=1.6799998-1.0 = 0.6799998
L=4.079999-4.0 = 0.07999897
L=0.47999382-0.0 = 0.47999382
L=2.879963-2.0 = 0.8799629
L=5.2797775-5.0 = 0.27977753
L=1.6786652-1.0 = 0.67866516
L=4.071991-4.0 = 0.07199097
L=0.4319458-0.0 = 0.4319458
L=2.5916748-2.0 = 0.5916748
L=3.5500488-3.0 = 0.5500488
L=3.300293-3.0 = 0.30029297
L=1.8017578-1.0 = 0.8017578
L=4.810547-4.0 = 0.8105469
L=4.8632812-4.0 = 0.86328125
L=5.1796875-5.0 = 0.1796875
L=1.078125-1.0 = 0.078125
L=0.46875-0.0 = 0.46875
L=2.8125-2.0 = 0.8125
L=4.875-4.0 = 0.875
L=5.25-5.0 = 0.25
L=1.5-1.0 = 0.5
L=3.0-3.0 = 0.0

0

bo 0.28 to jest okresowy ułamek
http://www.wolframalpha.com/input/?i=0.28+to+bin&dataset=
To tak jakbyś pytał ile wynosi
3,(3) - 3 i dziwił się że wynosi to 0,(3) a kalkulator wypisał ci że 0,3333333333332 ;]

Oczywiście 0.28 to ułamek okresowy jeśli zapiszesz tą liczbę binarnie! :)

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