[Java]求文件大小并保留两位小数(文件大小是一个长整型数单位是Byte)
前言
为了获得一堆apk的大小,并与人类友好方式显示。本来是打算用以下方法,到时不能具体到保留两位小数。
Returns a human-readable version of the file size, where the input represents a specific number of bytes.
If the size is over 1GB, the size is returned as the number of whole GB, i.e. the size is rounded down to the nearest GB boundary.
Similarly for the 1MB and 1KB boundaries.
代码
File f = new File("D:/apps/helloworld.apk");
String sizeStr = CommonUtils.longToString(f.length());
String sizeShow = longToString(sizeStr);
public static String longToString(long size) {
long kb = 1024;
long mb = kb * 1024;
long gb = mb * 1024;
String ret = "";
DecimalFormat df = new DecimalFormat("0.00");
if(size >= gb){
ret = df.format(size/(gb*1.0)) + " GB";
}else if(size >= mb){
ret = df.format(size/(mb*1.0)) + " MB";
}else if(size >= kb){
ret = df.format(size/(kb*1.0)) + " KB";
}else if(size > 0){
ret = df.format(size/(1.0)) + " Byte";
}
return ret;
}
分析
gb*1.0是为了让long类型转换成double类型,然后整除后的结果也是double类型。其它
结语
其它文件类型的文件处理方式一致。
[Java]求文件大小并保留两位小数(文件大小是一个长整型数单位是Byte)的更多相关文章
- 如何把Java的double类型变量保留两位小数
已知 双精度标量 f, 如果想以字符串形式输出,小数点后保留2位,可直接通过C语言的输出格式,System.out.printf("%.2f", f), 达到目的. 如果想要先转 ...
- java BigDecimal加减乘除 与 保留两位小数
BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal("5&quo ...
- JAVA ——int 类型除法保留两位小数
@Test public void txfloat() { // TODO 自动生成的方法存根 int a=9; int b=7; DecimalFormat df=new DecimalFormat ...
- java使double保留两位小数的多方法 java保留两位小数
这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat d ...
- java保留两位小数
java保留两位小数问题: 方式一: 四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); d ...
- Java保留两位小数的几种做法
1. String类型数字始终保留两位小数 , RoundingMode.HALF_UP); return bd.toString(); } /** * 使用DecimalFormat,保留小数点后 ...
- java double类型保留两位小数4种方法【转】
4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberF ...
- Java float保留两位小数或多位小数
Java float保留两位小数或多位小数 方法1:用Math.round计算,这里返回的数字格式的. float price=89.89;int itemNum=3;float totalPr ...
- java 金额计算,商业计算 double不精确问题 BigDecimal,Double保留两位小数方法
解决办法================== http://blog.javaxxz.com/?p=763 一提到Java里面的商业计算,我们都知道不能用float和double,因为他们无法 进行精 ...
随机推荐
- 洛谷 P3951 小凯的疑惑(数学)
传送门:Problem P3951 https://www.cnblogs.com/violet-acmer/p/9827010.html 参考资料: [1]:http://m.blog.sina.c ...
- 线程的加入.join()
格式:以加入A线程为例 线程对象B.join() 无参数,则A线程一直暂停,直到B线程运行结束. 线程对象B.join(时间t) 有参数,则A线程每隔t时间暂停一次,直到B线程运行结束. 关于 ...
- HDU2072 tri树/map/set/字符串hash
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题 水题 就是用来试试字符串算法的 tri树 ...
- 公钥密钥理解,signed cookie
公钥密钥理解,signed cookie 一.公钥密钥理解 公开密钥加密(英语:Public-key cryptography),也称为非对称加密(英语:asymmetric cryptography ...
- shiro中自定义realm实现md5散列算法加密的模拟
shiro中自定义realm实现md5散列算法加密的模拟.首先:我这里是做了一下shiro 自定义realm散列模拟,并没有真正链接数据库,因为那样东西就更多了,相信学到shiro的人对连接数据库的一 ...
- VS Code 扩展程序
1. Auto Rename Tag:自动重命名成对的 html 标签.假如你创建了一个<a>标签,现在想更改它,那么只要更改前面的标签后面与之成对的标签也会自动修改为匹配的标签. 2. ...
- Linux记录-CentOS配置Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- CM记录-JVM调优
1.堆栈大小 2.JVM重用 3.GC
- JAVA实现具有迭代器的线性表(单链表)
一,迭代器的基本知识: 1,为什么要用迭代器?(迭代:即对每一个元素进行一次“问候”) 比如说,我们定义了一个ADT(抽象数据类型),作为ADT的一种实现,如单链表.而单链表的基本操作中,大部分需要用 ...
- try 、catch 、finally 、throw 测试js错误
try语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. finally 语句在 try 和 catch 之后无论有无异常都会执 ...