Liczby typu float

0

Hej. Mam problem. Jak zrobić żeby po wykonaniu działania np, 1 * 100 nie otrzymywać wyniku 100.0 tylko 100 ?

0

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
0

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.

0

Zaokrąglić, przekonwertować na int lub użyć czegoś co formatuje floaty na wyjściu (nie wiem jak java, pewnie podobnie jak w C)

0

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
0

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)

0

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.

0
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("");

0

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.

0
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 ?

0

Poprawiłem posta ^

0

Czyli jak ?

0

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.

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