Kommastellen aus float extrahieren

Status
Nicht offen für weitere Antworten.

spacegaier

Mitglied
Hallo zusammen,

gibt es eine einfache Möglichkeit aus einem float die Kommastellen zu extrahieren. Das was vor dem Komma steht interessiert mich nicht.

Oder muss ich den float in einen String konvertieren und dann da so rumpfguschen, dass ich von dem String die hinteren beiden chars erhalte und diese dann wieder in einen int konvertieren?

Grüße - spacegaier
 

Wildcard

Top Contributor
Ja, auch wenn mir schleierhaft ist wie du auf die 'hinteren beiden chars' kommst. Warum sollte ein float immer 2 Nachkommastellen haben?
 

Wildcard

Top Contributor
Vielleicht noch zur Erklärung warum der von dir geforderte 'einfache' Weg eben nicht so einfach ist:
Die Zahl liegt intern in einer IEEE ähnlichen Darstellung vor.
Das bedeutet am Anfang kommt ein MSB, dann kommt ein 8 bit langer Exponent der um einen Offset von (i.d.R. 127 verschoben wurde) gefolgt von 23 Bit Mantisse, die vorher auch noch normalisiert wird.
Daraus nun die dezimalen Nachkommastellen zu berechnen ist so ganz trivial also nicht (zumindest wenn man bedenkt das die einzelnen Längen von der Prozessorarchitektur abhängen) :wink:
 

Wildcard

Top Contributor
Wie bildest du 0,3 auf ein Binärformat ab?
Code:
Zb 0,3:
0*1
0*0,5
1*0,25
0*0,125
0*0,0625
1*0,03125
....

-> 0,01001...
 

Kim Stebel

Bekanntes Mitglied
@wildcard: Möchtest du spacegaier verwirren oder ihm helfen? Wie floats oder doubles intern dargestellt werden ist doch für diese Frage gar nicht von Belang. :noe:
@spacegaier: meinst du sowas?
Code:
double d = 5.33;
int i = (int)d;
d = d - (double)i;
System.out.println(d);
Ausgabe: 0.33........
 

Murray

Top Contributor
Kim Stebel hat gesagt.:
@wildcard: Möchtest du spacegaier verwirren oder ihm helfen? Wie floats oder doubles intern dargestellt werden ist doch für diese Frage gar nicht von Belang. :noe:
@spacegaier: meinst du sowas?
Code:
double d = 5.33;
int i = (int)d;
d = d - (double)i;
System.out.println(d);
Ausgabe: 0.33........

Mit d = 5.33 gibt das bei mir 0.33000000000000007, mit d = 5.30 bekomme ich 0.2999999999999998. Das Problem besteht wie von Wildcard beschrieben in der internen Darstellung von floats und doubles. Man müsste also auf jeden Fall das Ergebnis noch auf zwei Stellen runden (und nicht einfach abschneiden).

Wenn es nur darum geht, aus einer Textdatei Zahlen mit genau zwei Nachkommastellen einzulesen, dann wird es wohl besser sein, das Problem auf der String-Ebene zu lösen; aus der Datei sollte man die Zahlen also nicht als double oder float, sondern einfach als String lesen. Dann kann man z.B. mit String#indexOf die Position des Dezimaltrenners bestimmen und mit String#substring den Teil rechts davon isolieren. Diesen Teilstring kann man dann mit Integer#parseInt in eine Ganzzahl wandeln, die dann den Wert der Nachkommastellen haben.
 

Kim Stebel

Bekanntes Mitglied
@ wildcard: das muss man selbstverständlich noch auf 2 stellen runden....die aus der internen Darstellung resultierenden Rundungsfehler werden sich wohl kaum auf die 2te Nachkommastelle auswirken
 

Murray

Top Contributor
Kim Stebel hat gesagt.:
die aus der internen Darstellung resultierenden Rundungsfehler werden sich wohl kaum auf die 2te Nachkommastelle auswirken
Das hängt von Anteil vor dem Komma ab: wenn die Zahl groß genug wird, dann kann sich die Ungenauigkeit durchaus dort auswirken (ggfs. sogar schon im Bereich vor dem Komma).

Test doch mal d = 3333333333.30 oder d = 3333333333.0
 

Kim Stebel

Bekanntes Mitglied
du meinst sein Unternehmen hantiert mit solchen Beträgen und kann sich keinen Programmierer leisten? ;)
Spaß bei Seite...falls es sich um Geldbeträge handelt, ist natürlich int die bessere Wahl.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Double immer mit 2 Kommastellen Allgemeine Java-Themen 3
MQue Anzahl der Kommastellen Allgemeine Java-Themen 6
MQue JTextField Kommastellen Allgemeine Java-Themen 5
P Kommastellen beschränken Allgemeine Java-Themen 5
Arif Datentypen Float-Rundungsfehler Allgemeine Java-Themen 5
H float Berechnung: Ergebnis ohne wissenschaftliche Notation Allgemeine Java-Themen 5
RalleYTN float in WORD konvertieren Allgemeine Java-Themen 1
N OctetString --> Float Allgemeine Java-Themen 5
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
J Datentypen String in Float umwandeln und "umbauen"? Allgemeine Java-Themen 5
M float, double, BigDecimal Allgemeine Java-Themen 5
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
N Variablen Gleitkommazahlen - Kleineres float? Allgemeine Java-Themen 11
P Datentypen float mit komma statt punkt möglich? Allgemeine Java-Themen 6
S Type mismatch: cannot convert from Object to float Allgemeine Java-Themen 3
B Variablen Bug of Float. & Double.MIN_VALUE! Allgemeine Java-Themen 4
Tobse 8 bit float Allgemeine Java-Themen 6
M FIFO Queue: bytes in, float/double/etc out Allgemeine Java-Themen 5
vandread Float/Double probleme bei der Multiplikation?! Allgemeine Java-Themen 3
F Float Division - Nachkommastelle bei 0 ausblenden Allgemeine Java-Themen 2
Developer_X "String" in "int" umwandeln, und dann "int" in "float" Allgemeine Java-Themen 8
G String nach Float parsen Allgemeine Java-Themen 2
E hex- Stirng in einen float umwandeln Allgemeine Java-Themen 9
MQue Float- Wert formatieren Allgemeine Java-Themen 8
E int vs. float vs. double Allgemeine Java-Themen 7
G WAV-Samples bearbeiten oder: 2 Bytes -> short -> float Allgemeine Java-Themen 5
J Float Formatierung? Allgemeine Java-Themen 6
P string zu float - darstellungsproblem Allgemeine Java-Themen 4
G Verständnisproblem double und float Allgemeine Java-Themen 7
W Division mit float und double Allgemeine Java-Themen 2
B Umwandeln von Bytes in float Zahl (DataInputStream) Allgemeine Java-Themen 3
W float/double verhält sich seltsam Allgemeine Java-Themen 6
R Float richtig in Integer ? Allgemeine Java-Themen 4
N Float zahl auf eine Stelle nach dem Komma runden Allgemeine Java-Themen 3
A Float-Wert auf 2 Stellen nach den Komma runden ? Allgemeine Java-Themen 2
H Multiplikation int*float Allgemeine Java-Themen 2
V Typumwandlung Integer, Float etc in String Allgemeine Java-Themen 4
S Rechnen mit float Zahlen Allgemeine Java-Themen 2
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
izoards Bestimmter Text aus PDF extrahieren Allgemeine Java-Themen 3
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
C jar Archiv im Programm aus dessen jar extrahieren Allgemeine Java-Themen 2
F Calss Datei mit allen Ressources extrahieren Allgemeine Java-Themen 5
S Robuste Methode um Text von HTML code zu extrahieren..? Allgemeine Java-Themen 6
P Font aus PDF extrahieren -> im Panel anzeigen Allgemeine Java-Themen 3
M DLL aus jar extrahieren und als lib nutzen Allgemeine Java-Themen 24
J String filtern / XML-Code extrahieren Allgemeine Java-Themen 4
L Private Key aus KeyDatei extrahieren Allgemeine Java-Themen 2
P Tonspur aus Video extrahieren und konvertieren Allgemeine Java-Themen 2
D [win] icon aus exe extrahieren Allgemeine Java-Themen 5
J URLs aus HTML Datei extrahieren Allgemeine Java-Themen 2
D Bilder extrahieren aus EPS - Problem mit ASCII85 Allgemeine Java-Themen 2
S JavaDoc aus .class Datei extrahieren Allgemeine Java-Themen 5
T [htmlparser.sourceforge.net] Attribute extrahieren Allgemeine Java-Themen 3
B Film aus Java JAR-Archiv extrahieren Allgemeine Java-Themen 4
J PDF Content extrahieren mit JPO Allgemeine Java-Themen 5
M Embedded Files aus PDF extrahieren Allgemeine Java-Themen 3
S Daten extrahieren aus Excel Dateien (auch 2k7) Allgemeine Java-Themen 4
M TIFFs aus PDF extrahieren Allgemeine Java-Themen 4
C Textteile aus Strings extrahieren? Allgemeine Java-Themen 6
C Alle Möglichen Substrings der Länge k aus String extrahieren Allgemeine Java-Themen 9
R Text aus PDF extrahieren Allgemeine Java-Themen 2
P Bits extrahieren Allgemeine Java-Themen 5
K Verzeichnis rekursiv aus JAR-Datei extrahieren Allgemeine Java-Themen 6
J Packet aus JRE 6 für JRE 5 "extrahieren" Allgemeine Java-Themen 4
RaoulDuke Reguläre Ausdrücke - Daten extrahieren Allgemeine Java-Themen 3
R Text aus PDF extrahieren Allgemeine Java-Themen 1
M URL aus einem String extrahieren, mit reg. Ausdrücken? Allgemeine Java-Themen 19
M CAB Files extrahieren / entpacken Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben