7

我试图四处寻找解决方案,但我根本做不到。我想显示以字节为单位计算的 long 的兆字节表示。

在 Java 中,您有一个名为 length() 的方法,您可以在文件对象上调用该方法。它将返回存储在 long 中的文件大小(以字节为单位)。现在,我想把它变成兆字节而不是字节。我正在尝试使用的文件大小为 161000 字节。如果我没记错的话,就是 0.161 兆字节。所以我会做字节/ 100000,我希望得到0.161。问题是我没有。

如果我使用我的 Windows 计算器或任何其他计算器,应用程序可以设法显示这 3 个小数。为什么我不能这样做?我试图将结果存储为双精度,结果为 0.0

编辑:已找到答案。感谢 wrm:

长 b = file.length(); 双 mb = (双) b / (1024 * 1024);

4

5 回答 5

8

也许一些代码可以澄清问题,但我认为,您正在进行某种隐式转换。像这样的东西应该工作:

double result = (double)myLongVal / 1024.0;
于 2012-05-14T12:09:11.300 回答
3

您需要将其中一个参数转换为双精度,而不仅仅是结果。

尝试除以1000000.0

于 2012-05-14T12:07:48.713 回答
2

你做错的是你使用积分除法,你需要使用浮点数。

如果您的两个操作数都是整数(long 和 int),您将得到不整数的结果 - 即它将没有小数部分。

如果你想有十进制除法,至少你的操作者之一必须是bee float 或 doule。您可以通过将 .0 添加到文字数字或使用类型变量来获得它。

我还建议使用 BigDecimal 类,它总是会产生正确的结果,因为 long 和 double 不能代表它们范围内的所有十进制数。(它们的精度有限)

于 2012-05-14T12:18:38.760 回答
1

您可以查看DecimalFormat类并将结果格式化为您希望的格式。

double value = size / 1000.0;
DecimalFormat df = new DecimalFormat("#.##");    //This should print a number which is rounded to 2 decimal places.
String str = df.parse(value);
于 2012-05-14T12:08:16.767 回答
0
Long size1 = size / 1000;
double value = (double) size1;
String str = String.valueOf(value);

这给我们带来了魔力。

于 2016-01-01T19:55:13.723 回答