今天做项目时候遇到一个挺好玩的事情,项目涉及到屏幕上显示数据,需要保留规定小数位数
因为用的是和后台交互的数据,所以我直接拿过来的String,字符串转换成小数倒还正常,我用的直接是double保存,String转换成Integer之后除以想保留地位数
比如这个例子后面÷10000,就是保留小数点后四位
String s = "20000";
double v = Integer.parseInt(s) / 1000.00;
运行的时候多数都正常,但是当末尾有零的时候,却被自动舍掉了,这肯定不满足保留规定位数的要求了
仔细研究了一下发现格式化数据这个类DecimalFormat,参数就是规定的数据格式,然后用format格式化数据即可
String ss = "20000";
double vs = Integer.parseInt(ss) / 1000.00;
DecimalFormat dfs = new DecimalFormat("0.00");
String s3s = dfs.format(vs);
最后两行即是使用方法,需要注意format参数可以是很多类型,但是返回值是String
另外提供一种Math工具保留小数位数的方法
double a=15.32743859;
double b=Math.round(a*10000)/10000.0000;//保留四位小数
这种四舍五入的形式保留小数,想保留n位小数,就Math.round(a*10的n次方)/10的n次方.n个0。