字节到兆字节的转换不起作用

时间:2013-11-11 19:52:09

标签: java android megabyte

我需要在我的应用程序中转换以兆字节为单位的字节但是有些错误。首先,我需要显示例如1.2MB而不是1MB ..现在,我有这个声明:

public long mStartRX = 0;

然后在onCreate

mStartRX = TrafficStats.getTotalRxBytes();

最后这将在byte中找到数据用法:

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当然不正确。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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用于从浮点varible / expression中精确得到2位小数(%.2f)。 “1024f”在浮点数中也表示1024,因为我们需要浮点除法,而不是整数除法。

修改

将其保存在变量

float rxMBytes = rxBytes/(1024f*1024f);
RX.setText(String.format("%.2f MB",rxMBytes ));