Double: Grenzen und Darstellung

Status
Nicht offen für weitere Antworten.

Donut

Bekanntes Mitglied
Noch ein Problem:

1. Wie kann ich einen Double-Wert übersichtlich darstellen?
Ich hab jetzt erstmal den Wert in einem JLabel ins Fenster gepackt. Nur dann sieht das so aus:
Bei einem "kleinen" Wert: 45724.0
Bei einel großen Wert: 4.454645187E29

Der eigentlich Wert ist auch richtig und so, nur möchte ich da stehen haben:
bei kleinen: 45724
bei großen: 4.45x10^29 (und die ^29 möglichst noch wirklich im Exponent)

Wie mach ich das?

2. Gibt es irgendeine Möglichkeit etwas höheres als double zu speichern? bzw. macht das Sinn? Gut kommt warsch auf
den Kontext an. Meiner ist folgender:
Bei jedem Durchgang wird
1. 2 boolsche Werte verglichen, und das bis zu 200.000-mal (is schon gut gerechnet)
2. 4 boolsche Werte umgeschrieben, bis zu 10.000-mal

macht es Sinn, dies öfter durchzuführen, als die Double-Variable einen Wert speichern kann? Wie lange dauert sowas?
 

The_S

Top Contributor
Wenn du größer als Double speichern möchtest, dann schau dir mal BigDecimal an. Beim formatieren wird dir DecimalFormat helfen.
 

Bleiglanz

Gesperrter Benutzer
du willt ^29 hochstellen? als Exponent?

wo und wie gibst du das denn aus, auf der Konsole dürfte das z.B. schwierig sein...

ggf. enthält die "normale Ausgabe" ein E29, also musst du wohl das E durch 10^ ersetzen
 

Donut

Bekanntes Mitglied
das ganz soll irgendwie in einen JPanel.
Ich habs im Moment als JLAbel gemacht, vielleicht brauch ich aber ja auch was anderes, um folgendes darzustellen:

aus : 54.2214876E2 (double)
soll werden : 54,2*10² (String)

(und natürlich nicht nur mit *10², sondern auch mal höhere Exponenten bei der 10)
 

0xdeadbeef

Top Contributor
In so ziemlich allen Swing-Komponenten (also insbesondere auch JLabels/JButtons) kann man im Konstruktor bzw. per "setText" HTML-formatierte Strings übergeben.

label.setText("<html>54,2*10<sup>2</sup></html>");

Zu Deinem Algorithmus: mir ist noch nicht so ganz klar, was Du da eigentlich machst. Dir sollte aber bewußt sein, daß ein Double zwar einen sehr großen Wertebereich hat, daß es aber keine Garantie dafür gibt, daß eine bestimmte Zahl damit auch exakt dargestellt werden kann. Immerhin gibt es trotz des im Vergleich zu einem Long viel größeren Wertebereichs auch nur 2^64 mögliche Zahlenwerte (bzw. sogar ein paar weniger). Entsprechend gibt es da nach oben und unten hin immer größer aufklaffende "Lücken" an Zahlen, die alle durch das gleiche Bitmuster repäsentiert werden müssen.

Wenn Du also über den Wertebereich von Long (max. ca. 9.223e+18) hinaus Integerwerte benötigst bzw. sogar Bitverschiebereien betreibst, würde ich Dir dringend zur Klasse BigInteger raten.
 

Donut

Bekanntes Mitglied
hm joa BigInteger leuchtet ein, zumal ich ja gar keine Fließkommazahlen haben will.

Ich hab die Variable jetzt in einen BigInteger gepackt, und das geht auch soweit. Nur mit der Formatierung für die Anzeige hab ich noch Probleme:
Wie soll ich dem sagen, dass er bei der Zahl z.b. 123456789 (jetzt ein kurzes Beispiel der Übericht wegen) nur die ersteb beiden nehmen soll, und wie bekomm ich raus wieviele Ziffern er damit weggeschnitten hat, damit 12*10^7 rauskommt?
(ich brauche also: Die ersten beiden ziffern: 12 ; Weggeschnitten: 7)
Oder anders gefragt: Wie bekomme ich raus, wieviel Stellen ein BigInteger hat? (durch 10^soviel teilen, Nachkommastellen wegscheiden, *10^soviel hinzufügen)

Die Anzeige ist damit natürlich nich exakt. Doch das ist gar nicht nötig, da es nur eine Größenordung angeben soll. (Sie kann z.b. auch =24 sein)
 

0xdeadbeef

Top Contributor
Na ja, wenn Du z.B, maximal 12 Stellen in der Mantisse anzeigen möchtest, mußt Du ja bloß prüfen, ob Deine Zahl > 999999999999 ist. Falls nein: normal anzeigen, ansonsten mußt Du halt den Exponenten ausrechnen.

Wenn Du z.B. eine Zahl N mit 25 Stellen hast, ist das 0.N*10^25:

1234567890123456789012345
-> 0.123456789012345789012345e+25

Jede Zahl, die Du vor das Komma ziehst, erniedrigt den Exponenten um 1.
Also ergibt sich für 12 Zeichen vor dem Komma ein Exponent von 25-12 = 13

123456789012e+13 bzw. 123456789012*10^13


Also kurz zusammengefaßt:
1) wandle den BigInteger per toString in einen String und zähle die Zeichen. Falls <= 12 Zeichen, weiter mit 4)
2) Berechne den Exponenten als strLen-12
3) Bestimme die Mantisse als subString(0,12)
4) Ausgeben
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
Neumi5694 double Vergleich Allgemeine Java-Themen 19
G Modulo - double Allgemeine Java-Themen 21
ReinerCoder Eclipse Fehlermeldung - The constructor Double(double) is deprecated Allgemeine Java-Themen 8
O Variablen Addition von Double-Werten ergibt seltsame 0.9999999 Zahlen Allgemeine Java-Themen 2
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
VfL_Freak Double mit zwei festen NK-Stellen ausgeben Allgemeine Java-Themen 9
B List<Integer> ist List<Double> ? Allgemeine Java-Themen 6
SkyScreamer Variablen Int umwande in Double/ 1 Miner = 5 Cookies/s Allgemeine Java-Themen 2
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
T Double salted bcrypt Allgemeine Java-Themen 0
A Zahl abgerundet obwohl Double Allgemeine Java-Themen 9
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
Y String to Double ohne ParseDouble Allgemeine Java-Themen 11
D Double aus String auslesen Allgemeine Java-Themen 8
M double Array Allgemeine Java-Themen 8
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
C String in double[][] konvertieren! Allgemeine Java-Themen 5
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
Zettelkasten Double --> Integer Allgemeine Java-Themen 4
M float, double, BigDecimal Allgemeine Java-Themen 5
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
J String mit "," in Double Wert konvertieren Allgemeine Java-Themen 7
R Eclipse Verschiedene Ergebnisse bei Berechnung eines double-Werts Allgemeine Java-Themen 5
B Variablen Bug of Float. & Double.MIN_VALUE! Allgemeine Java-Themen 4
T ArrayList<double[]> persitent anlegen Allgemeine Java-Themen 7
K double Zufallszahl Allgemeine Java-Themen 6
S String in Double - letztes Zeichen fehlt Allgemeine Java-Themen 4
T int <-> integer, double <-> Double... Allgemeine Java-Themen 2
J Umstellung von double auf BigDecimal Allgemeine Java-Themen 5
H2SO3- String 1.000,00 in double umwandeln Allgemeine Java-Themen 12
S Double-Checked Locking Allgemeine Java-Themen 4
I 2D-Grafik Polygon mit Double Werten zeichnen Allgemeine Java-Themen 4
M FIFO Queue: bytes in, float/double/etc out Allgemeine Java-Themen 5
H double dispatch und equals(Object) Allgemeine Java-Themen 6
vandread Float/Double probleme bei der Multiplikation?! Allgemeine Java-Themen 3
J Casting Problem Object, Double und String Allgemeine Java-Themen 3
F double auf 2 Nachkommastellen runden Allgemeine Java-Themen 9
D Double to Integer - ist das möglich? Allgemeine Java-Themen 3
T Object auf Double, Int, String testen Allgemeine Java-Themen 5
H2SO3- großen double in string mit e umwandeln Allgemeine Java-Themen 4
T Problem: Double als Geldbetrag - Rundungsfehler Allgemeine Java-Themen 5
P große double Zahlen und modulo Allgemeine Java-Themen 8
G Double Wert über OutputStream verschicken Allgemeine Java-Themen 2
M größer als double? Allgemeine Java-Themen 4
N Double ohne Wissenschaftliche Schreibweiße Allgemeine Java-Themen 5
M Double Braces Notation um Collections zu initialisieren Allgemeine Java-Themen 9
R Eigene ArrayList vom Typ Short, Integer oder Double Allgemeine Java-Themen 4
R Double Werte aus byte[] auslesen Allgemeine Java-Themen 5
T XStream.toXML => double mit , anstelle . Allgemeine Java-Themen 3
G Fehler bei Array.getDouble mit Double[] als Argument! Allgemeine Java-Themen 6
A Problem bei Übergabe von Werten in ein double Array. Allgemeine Java-Themen 21
M Double immer mit 2 Kommastellen Allgemeine Java-Themen 3
G double in Date Allgemeine Java-Themen 5
reibi double-Wert auf 2 Stellen nach dem Komma abschneiden Allgemeine Java-Themen 6
G Genauigkeit von Double Allgemeine Java-Themen 2
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
V "double in Exponentialschreibweise" normal ausgebe Allgemeine Java-Themen 2
S List<Double> oder Double[] in double[] zu konvertieren Allgemeine Java-Themen 6
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
E int vs. float vs. double Allgemeine Java-Themen 7
T cast Object to Double[] Allgemeine Java-Themen 2
DEvent double von c nach Java Allgemeine Java-Themen 4
K Double-Zahl runden Allgemeine Java-Themen 4
J double 3.0 soll ohne Nachkommastelle ausgegeben werden Allgemeine Java-Themen 12
S Java Double addieren Allgemeine Java-Themen 3
A string zu double Allgemeine Java-Themen 3
T double to object Allgemeine Java-Themen 3
J Große Zahl (double) as text ausgeben? Allgemeine Java-Themen 2
G Verständnisproblem double und float Allgemeine Java-Themen 7
padde479 String in double parsen Allgemeine Java-Themen 6
E double auf int runden, nicht abschneiden Allgemeine Java-Themen 2
G Double Zahl quadrieren Allgemeine Java-Themen 8
C double Zahlen mit drei NachkommaStellen in String umwandeln Allgemeine Java-Themen 2
T Nachkommastellen double Allgemeine Java-Themen 18
M double aufrunden Allgemeine Java-Themen 6
W Division mit float und double Allgemeine Java-Themen 2
D JTextfield für double werte Allgemeine Java-Themen 2
S Format von Double Allgemeine Java-Themen 9
F Umwandlungsproblem mit double Allgemeine Java-Themen 2
S Problem! Lösung mit Double buffering Allgemeine Java-Themen 3
T Vector <-> double Allgemeine Java-Themen 4
W float/double verhält sich seltsam Allgemeine Java-Themen 6
W String to Double (landesspezifisch) Allgemeine Java-Themen 14
T Fließkomma (double) richtig runden Allgemeine Java-Themen 7
P Class zu Integer, String, Double etc. Allgemeine Java-Themen 11
R Fehler in WindowsXP oder Java? - double in int konvertieren Allgemeine Java-Themen 10
E NumberFormatException bei cast auf double Allgemeine Java-Themen 5
D Wann ist das ergebnis einer Rechnung eine Double? Allgemeine Java-Themen 7
G Double Zahl auf 4 Stellen hinter Komma kuerzen Allgemeine Java-Themen 4
G warum operator || cannot be applied to int, double Allgemeine Java-Themen 11
A Probleme Umwandlung Ausdruck String in double Allgemeine Java-Themen 4
B Double-Wert aus einem HexString erstellen. Allgemeine Java-Themen 11
R Double Buffering zu langsam Allgemeine Java-Themen 11
C Bug in Java1.4.2_03 mit double Allgemeine Java-Themen 5
H Double mit 2 Nachkommastellen speichern. Allgemeine Java-Themen 5
C Double zu Hex oder Byte Allgemeine Java-Themen 4
C Grenzen von Java überschritten Allgemeine Java-Themen 29
O über die grenzen des panels Allgemeine Java-Themen 5
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben