Klasy do konwertowania liczb

0

Chciałbym liczbę np.

63334834.9324394
zamienić na

63334834.93

jak to zrobić?

Używałem klasy NumberFormat ale są z nią problemy, znacie jakieś lepsze rozwiązania, inne podobne klasy?

0

Ale jakie to problemy są z NumberFormat?

NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);

Tak nie zadziała?

0

Niezupełnie, autor potrzebuje liczby, a nie Stringu.

NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
String s = n1.format(63334834.9324394);

Zmiennej s nie przekonwertuje na liczbę, trzeba wywołać wpierw
</code=java>s.replace(',','.').replace(?,"")

W miejsce ? trzeba wpisać separator umieszczany co trzy cyfry przez funkcję format. Prościej chyba tak:
```java
x = Math.round(63334834.9324394*100)/100.0;

@abc889, czy Ty nie mylisz dwóch rzeczy: zmiana wartości liczby (np. zaokrąglenie do dwóch miejsc po przecinku), zmiana sposobu wyświetlania liczby - wartość liczby nie ulega zmianie, ale wyświetlamy tylko dwie cyfry po przecinku.

0

Znaczy chodzi mi tylko o to żeby jak jest np. taka liczba 7282.8287 to żeby ona po przecinku miała tylko 2 miejsca czyli 7282.83 potrzebne jest to po to bo te moje wartości reprezentują ceny a taki sposób wyświetlania jak 7282.8287 zł byłby nie do przyjęcia przez osobę korzystającą z programu.

Próbowałem jeszcze tak:

Locale loc = new Locale("pl");
NumberFormat nf = NumberFormat.getNumberInstance(loc);

i próbowałem korzystać z funkcji

nf.parse("1 678 383,22");  // metoda zmieniająca napis na liczbę

oraz 

nf.format(1678383.22); // metoda formatująca liczbę do napisu

ale nie dają oczekiwanego skutku

0
        BigDecimal a = new BigDecimal("1.234456");
        BigDecimal b = a.setScale(2, RoundingMode.HALF_EVEN);
        float as = b.floatValue();
        System.out.println(as);

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