float to String

kloakenratte

Mitglied
Hallo!

Also ich würde gerne einen float in einen String konvertieren nach einer Rechenoperation. Wichtig dabei ist, dass ich keine Nachkommastellen verliere.
Jetzt kann es vorkommen, dass ich nach der Rechenoperation beispielsweise eine Zahl bekomme, die aber aufgerundet gehört, zb. 32.823999999, weil das korrekte Ergebnis eben 32.824 wäre.

Mit dem DecimalFormatter kann ich wohl nicht arbeiten, da ich eben nie wissen kann, wieviele Nachkommastellen das Ergebnis haben wird.
DecimalFormat formatter = new DecimalFormat("0.000");
String str = formatter.format(fltValue);

Bei einem dirty cast, werden zwar alle Nachkommastellen korrekt übernommen, aber nur, wenn obiges Beispiel kein Ergebnis mit nachfolgenden 9ern liefert, die eigentlich aufgerundet gehören.
String str = Float.toString(fltValue);

Für Ideen und Tipps bin ich dankbar!

LG
 

Simon_Flagg

Bekanntes Mitglied
such dir aus, auf welche stelle du runden willst und runde dann manuell (wenns die zehnte ist, dann geht das dann eh alles weiter, bis nicht mehr nur neuner da sind)

lg
 

kloakenratte

Mitglied
Wie soll ich mir das aussuchen? Wie gesagt, ich darf keine wichtigen Nachkommastellen verlieren. Es soll aber das richtige Ergebnis rauskommen und wenn das Ergebnis 31.349999 ist, dann ist eigentlich die Zahl 31.35 gemeint.
 
A

abcjk

Gast
Hallo,

in dem erhaltenen genauen String mit indexOf nach 9 suchen, wenn die hinter dem Komma zweimal hintereinander auftaucht die Stelle davor mit dem nächsthöheren Wert belegen und den Rest abschneiden. Was einfacheres fällt mir im Moment Leider nicht ein.
 

kloakenratte

Mitglied
Ist halt keine schöne Lösung finde ich. Da muss es doch eine Möglichkeit geben den float richtig zu casten. Wäre meiner Meinung nach ein ziemlicher schmarrn, wenn man das so mühsam machen muss.
 

kloakenratte

Mitglied
Also soweit ich das sehe, ist BigDecimal die richtige Entscheidung, da mit float und double leicht Rundungsfehler auftreten. Aus diesem Grund ist abcjks Lösung nicht einmal im geringsten verwendbar, da nicht immer 9er zum Schluss auftreten können, sondern auch andere Zahlen.
 

Simon_Flagg

Bekanntes Mitglied
überleg dir, ab welcher stelle du das ganze nicht mehr brauchst --> bis fe zwanzig dezimalstellen braucht das eh keiner --> hab ich gemeint

lg
 

kloakenratte

Mitglied
ICH BRAUCHE JEDE STELLE ZWECKS GENAUIGKEIT... nur die Rundungsfehler sollten abgeschnitten werden.

Beispiel:
0.217 - 0.211 = 0.006

double: 0.00599999725818634
float: 0.0059999973
BigDecimal: 0.0060000000000000053290705182007513940334320068359375000

Und nein, ich werde jetzt nicht hergehen und ein Format von "0.000" definieren, weil es genauso vorkommen kann, dass ich ein Ergebnis mit 4 Nachkommastellen erhalte.
Also bitte nicht so unsinnige Antworten schreiben, weil mir diese nichts bringen. Hier geht es um Genauigkeit. Und da kann ich nicht hergehen und lustig sein und sagen, nein 3 Nachkommastellen sollten reichen.
 

kloakenratte

Mitglied
Und natürlich will ich nicht mehr Nachkommastellen als überhaupt nötig. Bei obigem Beispiel will ich meine 0.006 und nicht 0.006000 oder sonst was....
 

Antoras

Top Contributor
Wenn du mit Fließkommazahlen rechnest treten nun einmal Rundungsfehler auf, das geht nicht anders. Um das zu umgehen bleibt dir nichts anderes übrig als die BigDecimal mit einem String anstatt einer Fließkommazahl zu initialisieren.
Java:
new BigDecimal("0.217").subtract(new BigDecimal("0.211")); // 0.006
new BigDecimal(0.217).subtract(new BigDecimal(0.211)); // 0.0060000000000000053290705182007513940334320068359375000
Wenn du einen String angibst wird BigDecimal auch tatsächlich mit diesem String initialisiert, bei einem Double hingegen erfolgt die Initialisierung über die Binärdarstellung des Doubles weshalb es zu den Ungenauigkeiten kommt.
 
T

tommysenf

Gast
Beschäftige dich bitte erst einmal etwas mit Numerik und Fehlerrechnung wenn du solche Anforderungen hast, dann verstehst du auch warum solche Nachkommastellen unvermeidlich sind und wie man damit umgeht.
 

kloakenratte

Mitglied
Ich habe schon verstanden, weshalb diese Rundungsfehler passieren. Habe bereits genug darüber gelesen, aber leider noch keine verwertbare Lösung gefunden.
Danke für den Tipp mit der Initialisierung des Strings, Antoras!! Klappt ja soweit super. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
B String to Float Java Basics - Anfänger-Themen 27
MiMa String nach float Konvertieren Java Basics - Anfänger-Themen 23
N Methoden String to Float Java Basics - Anfänger-Themen 3
K aus String mach Float funktioniert nicht warum? Java Basics - Anfänger-Themen 7
M String Datei in Float-Matrix umwandeln Java Basics - Anfänger-Themen 8
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
B Datentypen char, int, float in String Variable speichern Java Basics - Anfänger-Themen 4
J String => Float Problem Java Basics - Anfänger-Themen 10
G String zu float oder int Java Basics - Anfänger-Themen 3
N String -> float Java Basics - Anfänger-Themen 3
M Float in String umwandeln Java Basics - Anfänger-Themen 9
R float Variable aus String Java Basics - Anfänger-Themen 8
D HILFE bei float to String Java Basics - Anfänger-Themen 6
& String to Float Java Basics - Anfänger-Themen 7
W String into Float Java Basics - Anfänger-Themen 7
S Dumme Frage... String in Float umwandeln Java Basics - Anfänger-Themen 10
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
A Negative float Werte? Java Basics - Anfänger-Themen 10
J Float Frage Java Basics - Anfänger-Themen 1
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
V Variablen Genauigkeit von float Java Basics - Anfänger-Themen 3
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
S Math.ceil für float Java Basics - Anfänger-Themen 1
T Kann erbende Klasse Attribute der vererbenden Klasse anpassen (int -> float)? Java Basics - Anfänger-Themen 9
J Array zu float Java Basics - Anfänger-Themen 6
I Datentypen float-Grenzen (?) Java Basics - Anfänger-Themen 21
X Einfache Frage; wie soll ich die spezielle float var speichern? Java Basics - Anfänger-Themen 2
C Erste Schritte Eingabe mit Float Java Basics - Anfänger-Themen 1
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
M Datentypen Integer und Float Konflikt Java Basics - Anfänger-Themen 3
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
V Datentypen Position mit Int und Float berechen und ausgeben Java Basics - Anfänger-Themen 5
G double in float umwandeln Java Basics - Anfänger-Themen 2
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
P Variablen 2D float unterteilen Java Basics - Anfänger-Themen 3
W Variablen float rundet beim Bruch rechnen Java Basics - Anfänger-Themen 3
M Erste Schritte float-Array auslesen Java Basics - Anfänger-Themen 4
S byte to float Java Basics - Anfänger-Themen 4
K Datentypen Wertebereich float/double - Warum nicht hoch -1 Java Basics - Anfänger-Themen 6
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
1 float Array deklarieren Java Basics - Anfänger-Themen 10
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
G Queue mit int oder float Java Basics - Anfänger-Themen 3
Luk10 Unpräzise float-Werte Java Basics - Anfänger-Themen 10
U Nachbarzahl einer Float Java Basics - Anfänger-Themen 4
R Float Wertebereich Java Basics - Anfänger-Themen 3
V Double schneller als Float? Java Basics - Anfänger-Themen 13
T float[] in float Fehler Java Basics - Anfänger-Themen 6
P Einem Double-Objekt einen float-Wert zuweisen Java Basics - Anfänger-Themen 2
B Datentypen Float ohne .0 ausgeben, sonstige Nachkommastellen aber erhalten Java Basics - Anfänger-Themen 4
C Probleme mit float und int Java Basics - Anfänger-Themen 3
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
C Falsches Ergebnis float-Addition Java Basics - Anfänger-Themen 10
N Datentypen Warum Compilerfehler bei float f = 4.0; Java Basics - Anfänger-Themen 2
X Float ausgeben Java Basics - Anfänger-Themen 3
M Float und double Java Basics - Anfänger-Themen 11
S Datentypen float statt void Java Basics - Anfänger-Themen 3
C Datentypen Float und Double Java Basics - Anfänger-Themen 2
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
D Datentypen Parse float[] to int[] Java Basics - Anfänger-Themen 4
S Long und Float Frage Java Basics - Anfänger-Themen 2
lenniii float[] Java Basics - Anfänger-Themen 2
S casten array in int von float Java Basics - Anfänger-Themen 5
P float Eingabe wird nicht akzeptiert, obwohl Variable als float deklariert Java Basics - Anfänger-Themen 2
M Vergleich Float-, Doublewert Java Basics - Anfänger-Themen 10
F Array in double/float Java Basics - Anfänger-Themen 4
A text mit float ausgeben Java Basics - Anfänger-Themen 14
G float - Frage Java Basics - Anfänger-Themen 2
G Float schneidet nach dem Rechnen auf eine Stelle ab Java Basics - Anfänger-Themen 9
P Float wisenschaftliche Ausgabe/Exponenten Java Basics - Anfänger-Themen 2
G Float Nachkommazahlen vergleichen Java Basics - Anfänger-Themen 7
G PRoblem mit rekursiver float additions methode Java Basics - Anfänger-Themen 9
O Object in Float konvertieren Java Basics - Anfänger-Themen 2
F bei einem Float nur x Stellen nach dem Komma anzeigen ? Java Basics - Anfänger-Themen 7
D Formatierung: ganzzahlige Float Werte nach Int Java Basics - Anfänger-Themen 2
V Exponentieren mit Exponenten vom Typ float Java Basics - Anfänger-Themen 2
J einlesen von datei, float und array und und und. Java Basics - Anfänger-Themen 7
B Vector nach float[] casten Java Basics - Anfänger-Themen 6
S float in int umwandeln? Java Basics - Anfänger-Themen 4
M Float-Zahl auf x Stellen beschränken Java Basics - Anfänger-Themen 6
M Problem mit float und nullzuweisung Java Basics - Anfänger-Themen 15
G float in int wandeln Java Basics - Anfänger-Themen 2
H float Java Basics - Anfänger-Themen 3
K Eingabe von float werten Java Basics - Anfänger-Themen 4
sambalmueslie Float.parseFloat Java Basics - Anfänger-Themen 5
G Frage zur Objekt-Wrapper Float ? Java Basics - Anfänger-Themen 6
G Frage zur Eingabe von Float ? Java Basics - Anfänger-Themen 4
G float-Array _ohne_ Arrays.sort sortieren Java Basics - Anfänger-Themen 5
D Zahlen von Typ float aus einer Textdatei lesen Java Basics - Anfänger-Themen 2
R switch erlaubt keine float/double-Rechnung Java Basics - Anfänger-Themen 5
M Char to Float umwandeln. Java Basics - Anfänger-Themen 4
W nach Eingabe prüfen: ob int, double,float,... Java Basics - Anfänger-Themen 3
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben