Frage von Schloni1995, 80

Wie kann ich einen Double oder Float zu zwei Nachkommstellen zwingen ohne ihn nachher als String zu haben?

Ich versuche seit einiger Zeit aus 21.3 oder 1006 --> 21.30 (oder) 1006.00 zu machen.

Aber immer wieder aufs neue werden überflüssige Kommastellen einfach abgeschnitten... Ich brauche es aber als Double oder Float, da meine Tabelle sonst nicht richtig sortiert

Expertenantwort
von Suboptimierer, Community-Experte für Mathe & Mathematik, 20

Der Ausgabebefehl schneidet die Nachkommastellen ab. Intern verwendet double oder float immer den gleichen Speicherplatz mit gleicher Mantisse.

Das heißt, du solltest deinem Ausgabebefehl "beibringen", es richtig auszugeben. Kann er es nicht, kannst du in einer Zwischenvaribeln (oder direkt innerhalb des Ausgabebefehls) den Zahlenwert in eine Zeichenkette konvertieren und die Zeichenkette dann ausgeben. 

Expertenantwort
von Willibergi, Community-Experte für Mathe & Mathematik, 26

Wenn du den Typ float bzw. double beibehalten willst, kannst du nichts am Zahlenformat ändern.

Willst du abschließende oder führende Nullen haben, so solltest du die Klasse DecimalFormat bzw.. die Methode printf bei Konsolenausgaben wählen.

Ich würde dir empfehlen, für die Ausgabe ein String-Objekt zu erstellen, das du formatierst. ^^

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach. 

LG Willibergi

Kommentar von Schloni1995 ,

Also kann ich in meiner Tabelle niemals sortieren, wenn ichdie Zahlen nach dem Format 20.01 einfügen will????

Kommentar von Willibergi ,

Natürlich kannst du sie sortieren.

Intern sollten Sie unformatiert als double oder float vorliegen, nur bei der Ausgabe formatierst du die Zahlen und gibst den entstehenden String aus. ;)

LG Willibergi

Kommentar von Schloni1995 ,

Geht das auch, wenn ich über den Tabellenkopf sortieren will, mit  setAutoCreateRowSorter?

Expertenantwort
von KnusperPudding, Community-Experte für Java, 15

Ich brauche es aber als Double oder Float, da meine Tabelle sonst nicht richtig sortiert

Da die Nachkommastellen deiner Zahl die Sortierung nicht beeinflussen sollten, liegt das Problem vermutlich eher in der Sortierung als an den Nachkommastellen.

ohne ihn nachher als String zu haben

Meine Vermutung: Genau das wird das Problem sein: Deine Sortierung scheint mit Strings und nicht mit Zahlen zu arbeiten.

Kannst du deinen Komparator oder Comparable-Implementation posten?

Kommentar von Schloni1995 ,

Ich sortiere Integer....mittlerweile

Kommentar von KnusperPudding ,

Wenn du mit Nachkommastellen Sortieren willst, reicht Integer nicht. 

Wie sieht deine Sortierung denn aus?

Kommentar von Schloni1995 ,

Ich weiße der JTable einfach nur einen Tablerowsorter zu und aktiviere AutoCreateRowSorter

Kommentar von KnusperPudding ,

Und was ist die Columnclass deiner Spalte?

Wenn du Code hast, bei dem der Wurm drin ist, stelle bitte ein Nachvollziehbares Beispiel bereit.

Antwort
von ETechnikerfx, 23

Welche Programmiersprache?

Kommentar von Schloni1995 ,

Java

Kommentar von Schloni1995 ,

Und wie kann ich das jetzt in meine Tabelle einfüllen und ordentlich sortieren lassen?

Kommentar von ETechnikerfx ,

Es ist die Frage wann du sortieren willst und wie du die Daten ermittelst und für das befüllen der Tabelle bereitstellt. Ermittelst und stellst die Daten vor der Befüllung der Tabelle bereit, kannst du doch ein Array.Sort machen, womit die Daten im Array sortiert werden. Möchtest du dies machen wenn die Tabelle schon erzeugt wurde, musst du die Tabelle einlesen, Daten von String in Float konvertieren und dann ein Array.Sort.

Kommentar von Schloni1995 ,

Sortiert werden die Daten nie wirklch. Es wird nur die Tabelle sortiert wenn ich auf den Header klicke

Kommentar von ETechnikerfx ,

Es muss doch aber eine Methode geben welche das sortieren realisiert. Welches Framework nutzt du?

Kommentar von Schloni1995 ,

Eclipse

Antwort
von iokii, 21

Multiplizier die Zahl mit 100.

Kommentar von Schloni1995 ,

Wird abgeschnitten!

Kommentar von iokii ,

Was meinst du damit?

Kommentar von iokii ,

Achso, ne, ich mein du sollst die Zahl mit 100 multiplizieren, bevor du sie abspeicherst. Dann sind die ersten beiden Nachkommastellen die einer und zehnerstellen der neuen Zahl. Wenn du sie dann benutzen willst musst du sie vermutlich wieder durch 100 teilen.

Kommentar von Schloni1995 ,

Genau und dann schneidet java wieder automatisch die Nullen ab

Kommentar von iokii ,

Wenn du eine 2,00 hast und die dann mit 100 multiplizierst hast du eine 200, da wird Java ja wohl kaum die Nullen abschneiden.

Kommentar von Schloni1995 ,

Ich brauch aber 2.00 und keine 200

Kommentar von PWolff ,

Warum nicht ((int)(zahl*100))/100.0

Für die Anzeige der Nachkommastellen sollte man sowieso eine Ausgabeformatierung nehmen.

Keine passende Antwort gefunden?

Fragen Sie die Community