保留两位小数
今天,简单讲讲Android如何保留运算结果为浮点数时,保留两位小数显示。
最近,由于换了租房的位置,状态不好,现在没有心思写比较复杂的内容,最近写博客可能都会偏向简单的内容。
这个其实很简单,最近做一个功能时,获取到文件的大小为B的数据,在界面上需要显示为MB,这是需要转换才可以1MB=1024*1024B,所以需要进行触发运算,但是运算结果为整数不好,需要为浮点数并且显示小数点后两位数据。当时居然不知道怎么办,所以在网上查找资料,最终解决了问题,这里记录一下。
android 保留两位小数5种方法
float distanceValue = Math.round((distance/10f))/100f;
DecimalFormat decimalFormat =new DecimalFormat(0.00);//构造方法的字符格式这里如果小数不足2位,会以0补足.
String distanceString = decimalFormat.format(distanceValue) + km;//format 返回的是字符串
2.利用标签
首先在value>string资源文件重定义String标签:
<!--?xml version=1.0 encoding=utf-8?-->
<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="APP_name">TextCustomView</string>
<string name="hello_world">hello world!</string>
<string name="action_settings">Settings</string>
<string name="xliff_test">your name is <xliff:g id="NAME">%1$50s</xliff:g>, and your age is
<xliff:g id="AGE">%2$1.2f</xliff:g></string>
</resources>
然后再代码中使用:
String str = res.getString(R.string.xliff_test, xliff,(float)120);
然后得到的字符串就是保留两位小数据的(补零).
1.此种方式,在代码中就不需要再次对数据进行处理,可以简化代码与计算。
2.在使用xliff标签的%n$mf的方式的时候,m可以设置为1.n(n为要保留的小数位数,没有则补零,前面的1会完整保留当前数据,比如100.2会显示100.20,不用担心前面整数部分显示不正确)。
3.bigdecimal 方法
double f = 111231.5585;
BigDecimal bg = new BigDecimal(f);
double f1 = bg.setscale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
结果为:111231.56
4.string.format方法
System.out.println(String.format("%.2f", f));
结果为:111231.56
5.NumberFormat 方法
NumberFormat nf = NumberFormat.getNumberinstance();
nf.setMaximumFractiondigits(2);
System.out.println(nf.format(f));
结果为:111231.56
简单讲讲,其实很简单。第一种代码DecimalFormat在构造函数里设置了格式化的要求为保留两位小数,然后直接格式化浮点数就可以了。第2种代码string资源文件使用了%2$1.2f的格式化要求,其实就是保留两位小数。第三种代码使用将数据先转成BigDecimal,然后调用bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();来保留两位小数。第4种String.format之前写了博客讲这个的,大家可以去看看,或者自己去网上查找资料。第5中通过NumberFormat,通过设置nf.setMaximumFractionDigits(2);来保留浮点数两位小数。
以上5中函数是在网上找到的,都可以使用。但是由于我在listview里需要做很多的这种保留小数点的操作,所以对效率有要求。我最后自己想了一种代码,可以对数据先乘100然后除以100来保留两位小数。比如传回的文件大小为1234344444B.我是这样转换的:
(float)(1234344444B * 100 /1024/1024)/100,这样就可以保留两位小数,而且效率也比较好。
android 如何保留数据两位小数就讲完了。
就这么简单
文章最后发布于: 2018-07-17 09:09:29
相关阅读
Android Service启动(二) bindService()启动过程以及原
本篇文章主要讲解bindService()绑定Service的过程。(android的版本依旧是26) 通过bindService()绑定一个Service时,最终都是调用的Co
Hbuilder android 在线更新功能 后端获取最新版本号和
写这个博文的意义在于,做了一个使用纯h5网页的东西,然后想用hbuilder在外面包一层,这样就能android和ios都能同时使用,hb
准备工作
专题地址:http://www.apkbus.com/heima/ 黑马Android入门到精通 视频教程 01.什么是3G? 03_an
sc20_gpio.c ``` #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #inc