我想知道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 ?我该如何解决这个问题?
答案 0 :(得分:3)
long
变量只能保存长整数。您必须使用浮点类型。例如:
double size = totalBlocks * blockSize / 1073741824d;
要确保的另一点是计算中至少有一个操作数也是浮点类型(请参见常量的d
后缀)。否则,Java将计算一个整数值并将其分配给double变量。
此外,按照惯例,您的变量不应以大写字母开头。此样式保留用于类型名称。
答案 1 :(得分:-1)
该部门声明GB长为浮动
long Size = totalBlocks * blockSize/1073741824f;