Trennung von double in integer und dezimal Teile
Ich versuche zu trennen, eine doppelte in den ganzzahligen und dezimalen Teile
Also zum Beispiel die Anzahl 24.4 getrennt werden sollte, der in 24 und 4.
int integer = (int)number;
double decimal = number-(int)number;
System.out.println(decimal);
Mit dieser Methode gibt mir folgende Werte :
integer = 24
decimal = 0.3999999999999986
Brauche ich den Wert von dezimal-zu-sein 4.
Wie kann dieses problem behoben werden ?
Sie können das format zum drucken nur 1 Stelle nach dem Dezimaltrennzeichen.
Verstehen Sie, dass die Anzahl 24.4 kann nicht genau dargestellt werden als
Versuchen Sie auch meine Lösung! Es macht Spaß! 🙂
Ich gab dir ein upvote. Danke für die Hilfe
möglich, Duplikat der Wie bekomme ich ganze und gebrochene Teile von Doppel-in jsp/java?
Verstehen Sie, dass die Anzahl 24.4 kann nicht genau dargestellt werden als
double
?Versuchen Sie auch meine Lösung! Es macht Spaß! 🙂
Ich gab dir ein upvote. Danke für die Hilfe
möglich, Duplikat der Wie bekomme ich ganze und gebrochene Teile von Doppel-in jsp/java?
InformationsquelleAutor Ashish Agarwal | 2012-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man einen String
split(...)
. Und dann IntegerparseInt(...)
, um wieder die zwei integer-Komponenten.Dies ist keine gute Praxis!
InformationsquelleAutor Oh Chin Boon
Dies ist, weil
double
s sind nicht gerade "real-zahlen" - daran gibt es unendlich viele reelle zahlen in einem beliebigen Bereich, während es nur endliche Anzahl von Ziffern indouble
- somit eine endliche Anzahl von Werten, so dass einige Runden muss passieren.Tatsache ist, 24.4 nicht genau dargestellt werden, indem
double
- also der Anteil der deine Nummer ist wirklich etwas, um 0.3999....Wenn Sie möchten, eine exakte Lösung - verwenden Sie eine Bibliothek, die Ihnen genaue Werte für Dezimalzahlen, wie
BigDecimal
.Wenn Sie verstehen möchten, mehr über dieses Thema
double
s nicht genau - Sie sollten Lesen Sie mehr über floating-Punkte-Arithmetik, und dieser Artikel, obwohl hohes Niveau, ist auch ein muss, um wirklich zu verstehen, was Los ist.Wenn Sie nicht verstehen können diese Artikel nur noch - nur ist zu berücksichtigen: Wenn Sie einen genauen Wert -
double
s nicht - und sollten Sie nutzen Sie die Bibliothek, wenn dies der Fall ist.InformationsquelleAutor amit
Abhängig von der Anzahl der Dezimalstellen, können Sie diese Methode verwenden:
Erklärung: Entfernen Sie einfach das Dezimalzeichen, tun die Subtraktion, und endlich wieder das Komma wieder an Ihren ursprünglichen Speicherort!
auf die Anzahl der Dezimalstellen! Bitte zeigen Sie mir eine einzige fehlerhafte Fall, wenn es nur eine Ziffer ist.
Es gibt keine exakte Repräsentation für 0.1. Wie kann es überhaupt funktionieren? Versuchen Sie es für 24.1 durch 24.9.
Es funktioniert für alle zahlen. Siehe hierzu auch die Erklärung.
InformationsquelleAutor RGO
![Hier ist meine Lösung][1]
hier ist meine Lösung.
Ich habe eine einfache Methode, die in C Programmieren, um split-die Bruchzahlen in zwei Verschiedene ganze zahlen...Hier unten ist der Code
Ausgabe
24.559999
integer-Teil 24
Nachkommastellen 559999488
InformationsquelleAutor Sameer
Hier ist eine kleine Methode, die ich schrieb, um dies zu erreichen:
InformationsquelleAutor Robert Eksten
InformationsquelleAutor Belov Vladimir
InformationsquelleAutor user3291532
Finden Sie zuerst die Anzahl der Ziffern nach dem Dezimalpunkt, und mit so viel Zahl von 10 ist Sie haben, sich zu vermehren. zB: x=26.78621 dann multiplizieren 100000[ hier können Sie sich nicht vermehren wie x*10, wieder x*10, also auf (5 mal), das 1. mal, multiplizieren Sie mit 10, es wird Ihnen 267.862199999..] Nach Multiplikation subtrahieren 2600000 von dem Ergebnis. hier ist ein link für deine Antwort, die habe ich code es.
https://stackoverflow.com/a/18517555/2508414
InformationsquelleAutor OnePunchMan
Als RGO angegeben, können Sie das tun und auch rund um die dezimale Zahl um den entsprechenden Wert.
Ex:
InformationsquelleAutor Alfaza
Können Sie dies tun:
verwenden 1000 um 3 Fraktionen:
Beispiel:
InformationsquelleAutor nimo23