java - 内存内部和整数作为输出?

标签 java android android-memory

我想知道总内部内存并将其写入首选项,因此我编写了以下代码:

 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/

相关文章:

java - 应用程序类变量在android中未初始化

java - 为 BroadcastReceiver 调用 onReceive 时出现 NullPointerException

java - AndroidStudio- fatal error : IndexOutOfBoundsException: Invalid index 0, 大小为 0

java - java对象在网络传输时是否保留hashcode值

android - 打开抽屉时将 Activity 推到右侧

java - 正确的android Activity 流程?

安卓工作室错误 : build fails every time I try to run the application on my phone

Textview 上的 Android 内存泄漏 - LeakCanary(泄漏可以忽略)

java - if 和 if-else 之间有什么明显的区别吗?

android - 允许在 Android Drawables 中针对各种密度进行自动缩放吗?