将long转换为十进制

时间:2012-05-14 12:05:20

标签: java

我试图寻找解决方案,但我根本不能。 我想显示以字节为单位计算的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);

5 个答案:

答案 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);

这给我们带来了魔力。