String to Float

* Allerdings würde das bei Dezimalzahlen auch nur funktionieren, wenn du immer ohne Rest durch 10 teilen kannst.

Was ich damit meinte ist: Wenn du einfach ungerade teilst, kannst du nen Rundungsfehler bekommen. Dann ist die letzte Stelle zwar auch weg, aber dafür die vorletzte falsch. Ich weiß nicht, wie Java da vorgeht, aber generell ist das ein eher unschöner Weg, um eine Zahl Stelle für Stelle durchzuexerzieren.

Man kann in jedem beliebigen System die letzte Stelle wegbekommen, in dem man durch die Basis teilt. Im binären System also durch 2 (vergleichbar dem rechts-shift >>)
Das stimmt aber nur, wenn ich in dem jeweiligen System rechne, oder sehe ich das falsch? Wenn ich in Java schreibe
Java:
int bin = 1010;
int bin_2 = bin / 2;
dann ist bin_2 = 505, da Java im 10er-System gerechnet hat. Um im Binärsystem zu rechnen braucht man die entsprechenden Bibliotheken, wobei ich die auf die Schnelle mit Google nicht gefunden hab...

Grüße
Frezl
 
Was ich damit meinte ist: Wenn du einfach ungerade teilst, kannst du nen Rundungsfehler bekommen. Dann ist die letzte Stelle zwar auch weg, aber dafür die vorletzte falsch.
Ich weiß nicht, ob ich das richtig verstehe, aber nein.
Die vorletzte Stelle bleibt auf jeden Fall unverändert, es wird math. gesehen immer abgerundet.
Sowohl in Java, als auch C#, C, C++ usw.usw.


Zum Anderen:
Natürlich, von Haus aus sind Zahlen dezimal interpretiert.
1010 ist nicht Zehn, sondern Eintausendzehn.
Um umzurechnen reicht aber ein schnell selbstgeschriebenes Codestück,
kein Grund für eine externe Bibliothek.

Trotzdem, auch mit Eintausendzehn, gilt das.
Beim Dividieren durch 2 wird von der Binärdarstellung eine Stelle abgeschnitten.
Code:
1010d = 1111110010
 505d = 111111001
 

Neue Beiträge

Zurück