Wykonuję program kalkulatora graficznego w języku Java i stosuję metodę, która wykonuje operację na podstawie danych wprowadzonych przez użytkownika, i zwraca wartość podwójną, która ma być wyświetlana w postaci JTextField
. Jednak chciałbym, aby wynik był wyświetlany jako liczba całkowita, bez następującego po nim ".0"
, gdzie po kropce dziesiętnej nie ma żadnych cyfr znaczących, ale w razie potrzeby nadal wyświetlane są kropki dziesiętne. Jaki jest najskuteczniejszy sposób na zrobienie tego?Niewyświetlanie liczb dziesiętnych, jeśli podwójne jest liczbą całkowitą?
Odpowiedz
Można użyć DecimalFormat
do tłumienia znaki spływu, np .:
DecimalFormat format = new DecimalFormat("#.##");
double doubleFromTextField = Double.parseDouble(myField.getText());
System.out.println(format.format(doubleFromTextField));
To pomaga w formatowaniu danych wyjściowych we wszystkich przypadkach, ale chcę tylko wyeliminować końcowe znaki dziesiętne, jeśli końcowy tekst dziesiętny ma wartość ".0". Jak napisać wyrażenie warunkowe, aby sformatować tylko dane wyjściowe, jeśli double jest liczbą całkowitą? Dzięki za pomoc. – Zero
W tym przykładzie robi się to, o co prosisz, każda znacząca (niezerowa) cyfra po kropce dziesiętnej zostanie wyświetlona, więc nie ma potrzeby dodatkowych kontroli. – Reimeus
Jestem taki głupi, nie zauważyłem, że drukowałem poprawną odpowiedź, którą chciałem do konsoli zamiast JTextField. Dziękuję, Reimeus! – Zero
Może konwertować na ciąg i manipulować go tam poprzez warunkowe jeśli końcowe dwie postacie są '.0'? – kush
Jak napisać warunkowe, aby sprawdzić znaki końcowe? – Zero
Istnieje lepsza odpowiedź na pytanie, które używa [DecimalFormat] (http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html). Zobacz odpowiedź Reimeusa poniżej. – kush