我想知道总内部内存并将其写入首选项,因此我编写了以下代码:
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。现在的问题是,为什么结果是整数呢?例如,在首选项中写为“5”,但如果我进行计算并将变量大小除以 1024/1024,我得到 5393,再次除以 1024 为 5,26,但从那时起我只收到 5 作为输出?我该如何解决这个问题?
最佳答案
long
变量只能保存长整型。您必须改用浮点类型。例如:
double size = totalBlocks * blockSize / 1073741824d;
另一点需要确保的是,计算中至少有一个操作数也是浮点类型(请参阅常量的 d
后缀)。否则,Java 将计算一个整数值并将其分配给 double 变量。
此外,按照惯例,变量不应以大写字母开头。此样式是为类型名称保留的。
关于java - 内存内部和整数作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246595/