android 如何保留数据两位小数
今天,簡單講講android如何保留運算結(jié)果為浮點數(shù)時,保留兩位小數(shù)顯示。
最近,由于換了租房的位置,狀態(tài)不好,現(xiàn)在沒有心思寫比較復(fù)雜的內(nèi)容,最近寫博客可能都會偏向簡單的內(nèi)容。
這個其實很簡單,最近做一個功能時,獲取到文件的大小為B的數(shù)據(jù),在界面上需要顯示為MB,這是需要轉(zhuǎn)換才可以1MB=1024*1024B,所以需要進行觸發(fā)運算,但是運算結(jié)果為整數(shù)不好,需要為浮點數(shù)并且顯示小數(shù)點后兩位數(shù)據(jù)。當(dāng)時居然不知道怎么辦,所以在網(wǎng)上查找資料,最終解決了問題,這里記錄一下。
android 保留兩位小數(shù)5種方法
1.使用DecimalFormat
2.利用標(biāo)簽
首先在value>string資源文件重定義String標(biāo)簽:
<!--?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);
然后得到的字符串就是保留兩位小數(shù)據(jù)的(補零).
1.此種方式,在代碼中就不需要再次對數(shù)據(jù)進行處理,可以簡化代碼與計算。
2.在使用xliff標(biāo)簽的%n$mf的方式的時候,m可以設(shè)置為1.n(n為要保留的小數(shù)位數(shù),沒有則補零,前面的1會完整保留當(dāng)前數(shù)據(jù),比如100.2會顯示100.20,不用擔(dān)心前面整數(shù)部分顯示不正確)。
?
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);結(jié)果為:111231.56
?
4.String.format方法
System.out.println(String.format("%.2f", f));
結(jié)果為:111231.56
5.NumberFormat 方法
結(jié)果為:111231.56
簡單講講,其實很簡單。第一種代碼DecimalFormat在構(gòu)造函數(shù)里設(shè)置了格式化的要求為保留兩位小數(shù),然后直接格式化浮點數(shù)就可以了。第2種代碼string資源文件使用了%2$1.2f的格式化要求,其實就是保留兩位小數(shù)。第三種代碼使用將數(shù)據(jù)先轉(zhuǎn)成BigDecimal,然后調(diào)用bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();來保留兩位小數(shù)。第4種String.format之前寫了博客講這個的,大家可以去看看,或者自己去網(wǎng)上查找資料。第5中通過NumberFormat,通過設(shè)置nf.setMaximumFractionDigits(2);來保留浮點數(shù)兩位小數(shù)。
?
?
以上5中函數(shù)是在網(wǎng)上找到的,都可以使用。但是由于我在listView里需要做很多的這種保留小數(shù)點的操作,所以對效率有要求。我最后自己想了一種代碼,可以對數(shù)據(jù)先乘100然后除以100來保留兩位小數(shù)。比如傳回的文件大小為1234344444B.我是這樣轉(zhuǎn)換的:
(float)(1234344444B * 100 /1024/1024)/100,這樣就可以保留兩位小數(shù),而且效率也比較好。
?
android 如何保留數(shù)據(jù)兩位小數(shù)就講完了。
?
就這么簡單
?
總結(jié)
以上是生活随笔為你收集整理的android 如何保留数据两位小数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 解决listview.n
- 下一篇: android 如何使用Parcelab