Lange float-Zahl Ausgabe zeigt Buchstaben
Ich habe den folgenden code:
String curDir = ".";
File fileObject = new File(curDir);
File[] fileList = fileObject.listFiles();
float fileLengthMegabytes = (float)fileList[i].length() / 1000000;
Die Methode fileList[i].Länge() gibt 311 Byte als Typ Long.
Den vorherigen code ergibt die folgende Ausgabe:
3.88 E-4
Wie bekomme ich die erwartete Ausgabe von 0,000311 innerhalb der fileLengthMegabytes variable?
- das ist ein ganz normales floating-point-display-Typ.
E
stellttimes 10 to the power of
, z.B. "3.88 mal 10 hoch -4". - Es sieht aus wie Sie gerade drucken der wissenschaftlichen notation. Der Wert hat sich nicht verändert. Check out java-Anzahl-format
- Wie viele doppelte Antworten brauchen wir?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird die Wissenschaftliche Notation.
UND Sie bekommen 388 statt 311, weil Sie die Division durch 1000000 statt 1048576 (1024 * 1024)
EDIT: 311 ist nicht erreicht, selbst mit 1048576, so erhalten Sie 370... also der Fehler ist wohl in deinem calc 😉
Als hier beschrieben , Sie müssen nur zum konvertieren von Scientific Notation auf Dezimal-Notation durch einen Formatierer.
Beispiel: http://ideone.com/2lkKv7
Ausgabe:
Dies ist der Weg, Java(und anderen Sprachen) anzeigen floating-point-zahlen.
E
bedeutet nur10^
, so3.88E-4
ist eine andere Art des Schreibens3.88 x 10^-4
, das ist das gleiche wie0.000388
.Dieses format bezeichnet man wissenschaftliche notation. E-notation ist eine computer-Darstellung der wissenschaftlichen notation.
Den rest Ihrer Ungenauigkeit (388 vs 311) ist wegen 1000000 ist nicht die genaue Zahl, die Sie möchten, zu teilen durch. Siehe die anderen Antworten, für mehr details.
E
mit10^
beim drucken ist es?3.88 E-4 wie bereits erwähnt, ist eine Darstellung in der wissenschaftliche E-notation.
Wenn Sie wollen, um es zu drucken oder konvertieren in String schreiben Sie etwas wie:
und du hast:
respektvoll
Wenn Sie wollen, normale zahlen (ohne wissenschaftliche notation), verwenden Sie
BigInteger
Hinweis: Normale
double
Wert würde auch ausreichen.Um die notation, die Sie wollen, verwenden Sie einen formatter:
sollten geben Sie Ihr Ergebnis.
Siehe auch:
Java-Doc: String.Format,
Java-Doc: Formatter