0

我需要在我的应用程序中将字节转换为兆字节,但出了点问题。首先,我需要显示例如 1.2MB 而不是 1MB .. 现在,我有这个声明:

public long mStartRX = 0;

然后在 onCreate

mStartRX = TrafficStats.getTotalRxBytes();

最后这是以字节为单位查找数据使用情况:

final long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX;
        RX.setText(Long.toString(rxBytes) + " " + "Bytes");

我尝试了这个解决方案:

final long rxBytes = TrafficStats.getTotalRxBytes()/(1024*1024)- mStartRX;
        RX.setText(Long.toString(rxBytes) + " " + "Bytes");

但结果不正确.. 事实上,我显示类似:-1258912654当然它是不正确的。我该如何解决这个问题?

4

1 回答 1

3

我认为这需要一些数学技能,以及整数/浮点除法的知识。但是这段代码应该可以工作

long mStartRX = TrafficStats.getTotalRxBytes();
...
long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX;

RX.setText(rxBytes + " Bytes");
RX.setText(String.format("%.2f MB",rxBytes /(1024f*1024f)));

String.format 用于从浮点变量/表达式中精确获取 2 位小数 (%.2f)。“1024f”也表示浮点数中的 1024,因为我们想要浮点除法,而不是整数除法。

编辑

将其保存在变量中

float rxMBytes = rxBytes/(1024f*1024f);
RX.setText(String.format("%.2f MB",rxMBytes ));
于 2013-11-11T20:02:52.327 回答