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?
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?
Ale jakie to problemy są z NumberFormat?
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
Tak nie zadziała?
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.
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
BigDecimal a = new BigDecimal("1.234456");
BigDecimal b = a.setScale(2, RoundingMode.HALF_EVEN);
float as = b.floatValue();
System.out.println(as);