内存和整数作为输出?

时间:2013-11-27 15:34:27

标签: java android android-memory

我想知道Total Internal Memory并将其写入Preference中,所以我写了这段代码:

 File path = Environment.getDataDirectory();
 StatFs stat = new StatFs(path.getPath());
 long blockSize = stat.getBlockSize();
 long totalBlocks = stat.getBlockCount();
 long Size = totalBlocks * blockSize/1073741824;

 memory = (Preference) this.findPreference("free");
 memory.setSummary(Long.toString(Size)+" GB");

1073741824对应于1024 * 1024 * 1024,用于获取GigaByte。现在,问题是,为什么结果是整数?例如,在Preference中写入“5”,但是如果我进行计算并将变量大小除以1024/1024,我得到5393,再将1024除以5,26,但从那以后我只收到5作为outpout ?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

long变量只能保存长整数。您必须使用浮点类型。例如:

double size = totalBlocks * blockSize / 1073741824d;

要确保的另一点是计算中至少有一个操作数也是浮点类型(请参见常量的d后缀)。否则,Java将计算一个整数值并将其分配给double变量。

此外,按照惯例,您的变量不应以大写字母开头。此样式保留用于类型名称。

答案 1 :(得分:-1)

该部门声明GB长为浮动

long Size = totalBlocks * blockSize/1073741824f;