Convertir une longue décimal

J'ai essayé de regarder autour pour une solution à cela, mais je ne peux tout simplement pas.
J'en veux pour preuve le mégaoctet représentation de long, qui est calculé en octets.

En Java, vous avez une méthode appelée longueur() que vous pouvez appeler sur un objet de fichier. Il sera de retour de la taille des fichiers en octets stockés dans une longue.
Maintenant, je veux que long et de le transformer en méga-octets plutôt que des octets. Un dossier, je suis en train d'essayer avec à obtenir la taille 161000 octets. Si je ne me trompe pas, cela se traduit par 0.161 mégaoctets. Donc, je le ferais octets /100000 et je m'attends à obtenir 0.161. Le problème est que je n'ai pas.

Si je vais à ma Calculatrice de Windows, ou tout autre calculatrice, l'application peut gérer à montrer ces 3 décimales. Pourquoi est-ce que je ne peux pas faire cela?
J'ai essayé de stocker le résultat dans une double, qui vient juste de sortir 0,0

EDIT:
Une des réponses a été trouvé.
Grâce à wrm:

long b = fichier.length();
double mo = (double) b /(1024 * 1024);

FWIW, 1MB = 1024 * 1024 octets. Pas 1000 * 1000 octets, comme beaucoup le croient.
En fait, il est communément 1000 pour disque de stockage et 1024 de mémoire. Dans tous les cas, les OP membres qu'ils sont en la divisant par 100000 (10^5) qui est désactivée par un facteur de 10 - il doit être de 10^6 (ou 1024^2). Que être une erreur de frappe et que nous serions en mesure de dire si l'OP a en fait, nous nous sommes donné le résultat qu'ils obtiennent : -), Tous les problèmes (1) le plus petit exemple de code complet qui a le problème, (2) le comportement attendu et (3) le comportement réel.
C'est une question de MO vs MiB
mre résolu! Vous pouvez le voir plus bas. Merci d'être si rapide, si! 😀

OriginalL'auteur OmniOwl | 2012-05-14