Hej. Mam problem. Jak zrobić żeby po wykonaniu działania np, 1 * 100 nie otrzymywać wyniku 100.0 tylko 100 ?
akurat podales przyklad ktorego wynikiem jest 100, a nie 100.0. Jesli w dzialaniu biora udzial 2 czynniki ktore sa integer, to wynik zawsze jest integer.
Aby float / double zmienic na calkowite, musisz uzyc rzutowania, np
int i = (int) 3.14F;
System.out.println(i); // 3
Mam dwie zmienne float, różnie mam ilość miejsc po przecinku a efekt tylko jaki chcę osiągnąć to jeśli mam liczbę całą 10, 52, 83 to żeby mi nie pisał 83.0, 52.0, 10.0
O to mi chodzi.
Zaokrąglić, przekonwertować na int lub użyć czegoś co formatuje floaty na wyjściu (nie wiem jak java, pewnie podobnie jak w C)
Zajrzyj do dokumentacji klasy DecimalFormat.
DecimalFormat df=new DecimalFormat("######.##");
System.out.println(df.format(3333.147)); // 3333,15
System.out.println(df.format(3333.14)); // 3333,14
System.out.println(df.format(3333.00)); // 3333
Ok, dzięki panowie.
Mam jedno pytanie jak zrobić zaokrąglanie liczb do 4 lub 6 liczby po przecinku w ME ?
Szukałem ale to nie było przystosowane do ME i użyta była tam biblioteka, której w ME nie mam a jak przełączę się na SE to jest (java.lang.Math)
Sprawdź czy w Me da się użyć klasę Format lub metodę printf. Używa się tego niemal identycznie jak w C, co oznaczałoby, że wszelkie formatowania byłyby banalne do zrobienia.
System.out.println(new
PrintfFormat("Pre %s Post%%").sprintf("target")
);
System.out.printf( "value is %4.3g\n", 1.4d ); // prints value is 1.40
System.out.printf( "value is %4.3g\n", 1.456d ); // prints value is 1.46
System.out.printf( "value is %4.3g\n", 145.0d ); // prints value is _145
System.out.printf( "value is %8.4g\n", 1.5d ); // prints value is ___1.500
System.out.printf( "value is %4.4g\n", 1.5E-6 ); // prints value is 1.500e-06
System.out.printf( "value is %,8.6g\n", 12345.0d ); // prints value is 12,345.0
Tylko ja muszę przypisać to, żeby wyświetliło się na komponencie StringItem czyli domyślne wypisywanie tekstu to: s1.setText("");
Sprawdź czy nie masz dostępnej klasy Formatter. PrintStream używa jej właśnie do formatowania w metodzie printf(). Byłoby bardzo dziwne gdybyś miał dostępną metodę printf, a niedostępną klasę Formatter.
Najprościej jej użyć tak:
s1.setText(new Formatter().format("value is %4.3g\n", 1.4d).toString());
Być może jawne wywołanie toString() nie będzie potrzebne bo kompilator powinien chyba wywołać tę metodę niejawnie dla parametru String.
System.out.printf( "value is %4.3g\n", 1.456d );
A jak to przełożyć z system.out.printf na to żeby wyświetlać w StringItem w ME ?
Poprawiłem posta ^
Czyli jak ?
Rzuć okiem na dostępność w Me klasy Formatter. Jeżeli jest dostępna, to rozwiązanie masz w moim poście na poprzedniej stronie.