Nie jestem pewien, czy to ja, czy coś, ale mam problem z konwersją podwójnego ciągu na ciąg.
oto mój kod:
double total = 44;
String total2 = Double.toString(total);
Czy robię coś złego, czy brakuje mi tutaj kroku?
NumberFormatException
Podczas próby konwersji tego pojawia się błąd .
totalCost.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
try {
double priceG = Double.parseDouble(priceGal.getText().toString());
double valG = Double.parseDouble(volGal.toString());
double total = priceG * valG;
String tot = new Double(total).toString();
totalCost.setText(tot);
} catch(Exception e) {
Log.e("text", e.toString());
}
return false;
}
});
Próbuję to zrobić w onTouchListener. Będę pisać więcej kodu, w zasadzie, gdy użytkownik dotknie pola edytuj, chcę, aby informacje wyliczyły wypełnienie pola edycyjnego.
Odpowiedzi:
Spowoduje to konwersję podwójnie na ciąg
źródło
NumberFormat fmt = NumberFormat.getInstance(); fmt.setGroupingUsed(false); fmt.setMaximumIntegerDigits(999); fmt.setMaximumFractionDigits(999);
następnie użyjtotal2 = fmt.format(total)
Double.toString()
. Nie jestem pewien, jak odpowiada na pytanie.Używając Double.toString (), jeśli liczba jest za mała lub za duża, otrzymasz notację naukową taką: 3.4875546345347673E-6. Istnieje kilka sposobów na większą kontrolę nad formatem ciągu wyjściowego.
Użycie String.format () będzie najlepszym wygodnym sposobem.
źródło
Ten kod kompiluje się i działa dla mnie. Konwertuje podwójne na ciąg przy użyciu próbnych połączeń.
Zastanawia mnie widok NumberFormatException. Spójrz na ślad stosu. Zgaduję, że masz inny kod, którego nie pokazano w twoim przykładzie, który powoduje zgłoszenie tego wyjątku.
źródło
Wyjątek prawdopodobnie pochodzi od wywołań parseDouble (). Sprawdź, czy wartości podane dla tej funkcji naprawdę odzwierciedlają podwójne.
źródło
to działa. musi być powtarzalne.
źródło
Kotlin
Możesz użyć
.toString
bezpośrednio na dowolnym typie danych w kotlin, npźródło
ten kod działa
źródło
Double.toString()
połączenia,String.valueOf(double)
które połączeniaDouble.toString(double)
. Szalony, co?Jednym z nich jest zgłoszenie wyjątku. Musisz dodać rejestrowanie / drukowanie, aby zobaczyć, co jest w
volGal
środkupriceGal
- i nie tak myślisz.źródło
String
nie jest prawidłową reprezentacją tego,double
dlatego otrzymujesz ten wyjątek.Double.toString(total);
nie może zgłosić wyjątku. Zawsze. . Zmieniłeś to, nanew Double(total).toString();
co też nie możesz i jeśli zobaczysz tutaj odpowiedź, która została odrzucona, nie jest to coś, co kiedykolwiek chciałbyś zrobić.double.toString()
powinno działać. Nie typ zmiennejDouble
, ale sama zmiennadouble
.źródło
Po prostu użyj następującego:
Będzie to działać dla dowolnego typu danych.
Przykład:
źródło
Użyj
StringBuilder
klasy, tak jak:Otrzymasz pożądaną wydajność.
źródło
Co powiesz na to, kiedy to zrobisz
Po prostu tak
Gdzie „” + <zmienna> automatycznie przekonwertuje ją na ciąg znaków
źródło
Pełne informacje
Możesz użyć String.valueOf () dla float, double, int, boolean itp.
źródło
Istnieją trzy sposoby konwersji podwójnej na ciąg znaków .
„” + d
klasa publiczna DoubleToString {
}
Ciąg do podwojenia
źródło