J'ai le code suivant:
String curDir = "."; File fileObject = new File(curDir); File[] fileList = fileObject.listFiles(); float fileLengthMegabytes = (float)fileList[i].length() / 1000000;
5 Réponses :
C'est la façon dont Java (et de nombreuses langues) affiche des chiffres de points flottants. Ce format est appelé Notation scientifique . La notation électronique est une représentation informatique de la notation scientifique. P>
Le reste de votre inexactitude (388 VS 311) est que 1000000 n'est pas le nombre exact que vous souhaitez diviser. Voir les autres réponses pour plus de détails. P> E code> signifie simplement
10 ^ code>, donc
3.88e-4 code> est une autre façon d'écrire
3.88 x 10 ^ -4 code> , qui est la même que
0.000388 code>. p>
Existe-t-il un moyen de remplacer E code> avec
10 ^ code> en l'imprimant?
C'est la notation scientifique.
Et vous obtenez 388 au lieu de 311, car vous divisez à 1000000 au lieu de 1048576 (1024 * 1024) p>
EDIT: 311 n'est pas atteint même avec 1048576, De cette façon, vous obtenez 370 ... donc l'erreur est probablement dans votre Calc;) p>
comme Décrit ici , il vous suffit de convertir votre notation scientifique en une notation décimale via un formateur. P> Exemple d'exécution strong>: http://ideone.com/2lkkv7 p> sortie : P> MB1 en notation scientifique: 3.88e-4 P>
MB1 en notation décimale: 0.000388 P>
MB2 en notation scientifique: 3.7002563E-4 P>
MB2 en notation décimale: 0.0003700256 P>
blockQuote> p>
Si vous voulez des chiffres normaux (sans notation scientifique), utilisez Remarque: normal biginteger code>
double code> suffirait également. p> p>
Pour obtenir la notation que vous souhaitez, utilisez un formateur:
final Formatter f = new Formatter(); final String out = f.format("%8.6f", fileLengthMegabytes);
3.88e-4 Comme mentionné précédemment est une représentation dans le Notation électronique scientifique .
Si vous souhaitez l'imprimer ou convertir en chaîne, vous pouvez écrire quelque chose comme celui-ci: p> et vous avez: p> respectueusement p> p>
C'est un type d'affichage à point flottant parfaitement normal.
E code> représente
fois 10 à la puissance de code>, par ex. "3,88 fois 10 à la puissance de -4".
On dirait que vous imprimez simplement une notation scientifique. La valeur n'a pas changé. Découvrez Format de numéro Java
De combien de réponses en double ont besoin?