日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

android 如何保留数据两位小数

發(fā)布時間:2024/4/15 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 如何保留数据两位小数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天,簡單講講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

float distanceValue = Math.round((distance/10f))/100f; DecimalFormat decimalFormat =new DecimalFormat(0.00);//構(gòu)造方法的字符格式這里如果小數(shù)不足2位,會以0補足. String distanceString = decimalFormat.format(distanceValue) + km;//format 返回的是字符串


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 方法

NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); System.out.println(nf.format(f));

結(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。