我试图寻找解决方案,但我根本不能。 我想显示以字节为单位计算的long的兆字节表示。
在Java中,您有一个名为length()的方法,您可以在文件对象上调用该方法。它将返回存储在long中的文件大小(以字节为单位)。 现在,我希望将其转换为兆字节而不是字节。我正在尝试的文件大小为161000字节。如果我没有记错的话,那意味着0.161兆字节。所以我会做bytes / 100000,我希望得到0.161。问题是我没有。
如果我转到我的Windows计算器或任何其他计算器,应用程序可以设法显示这3位小数。为什么我不能这样做? 我试图将结果存储在一个double中,它只是0.0
编辑: 已找到答案。 感谢wrm:
long b = file.length(); double mb =(double)b /(1024 * 1024);
答案 0 :(得分:5)
也许一些代码可以澄清问题,但我认为,你正在进行某种隐式转换。 这样的事情应该有效:
double result = (double)myLongVal / 1024.0;
答案 1 :(得分:3)
您需要将其中一个参数转换为double,而不仅仅是结果。
请尝试除以1000000.0
。
答案 2 :(得分:2)
你做错了,你使用Integral divsion,你需要使用浮点数。
如果你的opernads都是整数(long和int)你会得到不完整的结果 - 即它没有小数部分。
如果你想拥有十进制divison,你的opernads中至少有一个必须浮动或加倍。 你可以通过将.0添加到文字数字或使用类型变量来获得。
我还建议使用BigDecimal类,它将总是产生正确的结果,因为longs和double不能表示其范围内的所有十进制数。 (他们的精确度有限)
答案 3 :(得分:0)
您可以查看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);
答案 4 :(得分:0)
Long size1 = size / 1000;
double value = (double) size1;
String str = String.valueOf(value);
这给我们带来了魔力。