Pobranie double sformatowanego do określonej ilości miejsc po przecinku

Pobranie double sformatowanego do określonej ilości miejsc po przecinku
DW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
1

Witam. W swoim programie posiadam tabelę JTable do której w kilku kolumnach wpisywane są liczby double, które ograniczyłem do 2 miejsc po przecinku tworząc metodę ustawFormatowanie() na podstawie tego wątku:
https://4programmers.net/Forum/Java/200875-zmienna_double_i_miejsca_po_przecinku
aktualnie linijka odpowiadająca za dodawanie wiersza wygląda tak:

Kopiuj
model.addRow(new Object[] {nazwaUrzadzenia, liczbaUrzadzen, ustawFormatowanie().format(mocUrzadzenia), ustawFormatowanie().format(dobowyCzas), ustawFormatowanie().format(zuzycieDzienne), ustawFormatowanie().format(zuzycieMiesieczne), ustawFormatowanie().format(kosztMiesieczny)});

jednakże w dalszej części programu chcę odczytać wpisane wartości z tabeli i czynię to za pomocą

Kopiuj
			for(int j = 2; j < model.getColumnCount(); j++)			
				tablicaSum[j-2]+=(double) model.getValueAt(i, j);

i tu pojawia się problem, a mianowicie

Kopiuj
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double

W jaki sposób pobrać tak sformatowaną liczbę lub w jaki inny sposób ją wpisać do tabeli, aby móc ją bezproblemowo pobrać?

CH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
1

nie tyle pobrać co przeparsować

Kopiuj
        String test = "1.22";
        double doub = Double.parseDouble(test);
jarekczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Siemianowice Śląskie
  • Postów: 500
1

De Wu, poszedłem za Twoim linkiem i rozumiem, że użyłeś DecimalFormat. To dobrze, bo elegancko byłoby przewidzieć obsługę separatora dziesiętnego. W takim razie przy transformacji powrotnej używaj tego samego obiektu.

double d = ustawFormatowanie().parse(liczbaJakoTekst).doubleValue()

Czyli przeglądasz dokumentację DecimalFormat, zwracając uwagę, że na dole masz jeszcze funkcje odziedziczone z klasy NumberFormat.

Double (+ String.format), jak podpowiedział Christosc, jest ok, jeżeli nie troszczysz się o ładne formatowanie (separator dziesiętny itp.).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.