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

... komplette Frage anzeigen

7 Antworten

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. 

Antwort bewerten Vielen Dank für Deine Bewertung

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

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schloni1995
05.09.2016, 10:08

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

1

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?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schloni1995
05.09.2016, 11:33

Ich sortiere Integer....mittlerweile

0

Ein kleiner Trick den ich benutzt habe:

Sagen wir, du hast eine Zahl x, die du auf 2 Nachkommastellen kürzen willst.

Dann nimmst du die zuerst mal 10^2 (da 2! nachkommastellen).
(dadurch sind auch die 2 nachkommastellen nun vor dem komma)

machst dann draus ein integer. (das schneidet alles hinter dem Komma ab)

machst daraus dann wieder ein double (weil anders der nächste schritt nicht funktioniert)

Und jetzt teilst du das duch 100.0 (das .0 schreibst du nur damit er auch ganz sicher eine double und keine int oder sonstwas division durchführt)

Hat alles geklappt , steht nun deine Zahl wieder da wie vorher als double, nur ist alles hinter der 2. nks weg

War jetzt mal so die erklären im schnellformat.

Sollen es die letzten k NKS sein, dann nimmst du statt 10^2 eben 10^k.

Lässt sich übrigens sogar prima als Funktion mit Parameter x und k basteln :-)

Antwort bewerten Vielen Dank für Deine Bewertung

Multiplizier die Zahl mit 100.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schloni1995
05.09.2016, 09:50

Wird abgeschnitten!

0

Welche Programmiersprache?

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?