淺談Java中浮點(diǎn)型數(shù)據(jù)保留兩位小數(shù)的四種方法
今天在進(jìn)行開(kāi)發(fā)的過(guò)程中遇到了一個(gè)小問(wèn)題,是關(guān)于如何將double類(lèi)型的數(shù)據(jù)保留兩位小數(shù)。突然發(fā)現(xiàn)這方面有一點(diǎn)欠缺,就來(lái)總結(jié)一下。
一、String類(lèi)的方式
該方式是是使用String的format()方法來(lái)實(shí)現(xiàn)的,該方法的作用就是規(guī)范數(shù)據(jù)的格式,第一個(gè)參數(shù)傳入一個(gè)字符串來(lái)表示輸出的數(shù)據(jù)格式,如保留兩位小數(shù)就使用“%.2f”,第二個(gè)參數(shù)是要進(jìn)行格式化的數(shù)據(jù)。實(shí)例如下:
double testDounle_01 = 123.456; float testFloat_01 = 456.125f; /** * 使用string類(lèi)的方式 * */ System.out.println("使用string類(lèi)的方式"); System.out.println(String.format("%.2f", testDounle_01)); System.out.println(String.format("%.2f", testFloat_01));
二、DecimalFormat類(lèi)
DecimalFormat類(lèi)主要就是用于格式化十進(jìn)制數(shù)據(jù)的,這個(gè)類(lèi)是NumberFormat 的一個(gè)具體子類(lèi),操作和使用起來(lái)都比較方便。在使用的時(shí)候需要實(shí)例化這個(gè)類(lèi),構(gòu)造函數(shù)中傳入數(shù)據(jù)的格式類(lèi)型。
其中各個(gè)符號(hào)的含義如下:
使用案例如下:
/** * 測(cè)試保留兩位小數(shù) */ public static void testDoubleToTwo() { /** *DecimalFormat類(lèi) */ DecimalFormat decimalFormat = new DecimalFormat("#.00"); String ans_3 = decimalFormat.format(testDounle_01); System.out.println(ans_3); }
三、BigDecimal類(lèi)進(jìn)行數(shù)據(jù)處理
java.math包中提供的API類(lèi)BigDecimal,是用來(lái)對(duì)超過(guò)16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù)。但是也可以用來(lái)定義小數(shù)點(diǎn)后兩位,但是使用起來(lái)比較麻煩,不太推薦使用。
double testDounle_01 = 123.456; float testFloat_01 = 456.125f; /** * BigDecimal類(lèi)進(jìn)行數(shù)據(jù)處理 * */ BigDecimal bigDecimal = new BigDecimal(testDounle_01); double ans_2 = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(ans_2);
四、NumberFormat類(lèi)進(jìn)行數(shù)據(jù)處理
NumberFormat類(lèi)是數(shù)據(jù)格式化類(lèi),使用該類(lèi)將浮點(diǎn)數(shù)保留二進(jìn)制的方法和BigDecimal類(lèi)似,但是使用起來(lái)也是十分的麻煩。
double testDounle_01 = 123.456; float testFloat_01 = 456.125f; /** * NumberFormat類(lèi)進(jìn)行數(shù)據(jù)處理 * */ NumberFormat numberInstance = NumberFormat.getNumberInstance(); // 設(shè)置最大小數(shù)點(diǎn)位數(shù) numberInstance.setMaximumFractionDigits(2); // 設(shè)置數(shù)據(jù)舍入類(lèi)型 numberInstance.setRoundingMode(RoundingMode.HALF_UP); System.out.println(numberInstance.format(testDounle_01));
總結(jié)一下
對(duì)于將浮點(diǎn)型數(shù)據(jù)保留兩位小數(shù),我比較推薦的還是前兩種方法,或者是直接使用String.format()方法,
到此這篇關(guān)于淺談Java中浮點(diǎn)型數(shù)據(jù)保留兩位小數(shù)的四種方法的文章就介紹到這了,更多相關(guān)Java浮點(diǎn)型保留兩位小數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea項(xiàng)目的左側(cè)目錄沒(méi)了如何設(shè)置
這篇文章主要介紹了idea項(xiàng)目的左側(cè)目錄沒(méi)了如何設(shè)置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02java中File轉(zhuǎn)為MultipartFile的四種實(shí)現(xiàn)方式
這篇文章主要介紹了java中File轉(zhuǎn)為MultipartFile的四種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06當(dāng)Transactional遇上synchronized的解決方法分享
前些時(shí)間剛好刷到了有關(guān)于“# 【事務(wù)與鎖】當(dāng)Transactional遇上synchronized”這一類(lèi)的文章,感覺(jué)這也是工作中經(jīng)常會(huì)遇到的一類(lèi)問(wèn)題了。所以就針對(duì)這個(gè)話題進(jìn)行了分析并整理了常用的解決方法,希望對(duì)大家有所幫助2023-05-05Java中使用JavaMail多發(fā)郵件及郵件的驗(yàn)證和附件實(shí)現(xiàn)
這篇文章主要介紹了Java中使用Java Mail多發(fā)郵件及郵件的驗(yàn)證和附件實(shí)現(xiàn),包括在郵件中加入圖片等功能的實(shí)現(xiàn)講解,需要的朋友可以參考下2016-02-02java web驗(yàn)證碼實(shí)現(xiàn)代碼分享
這篇文章主要為大家分享了java web驗(yàn)證碼的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06使用Autowired為什么會(huì)被IDEA警告最佳修改方法
這篇文章主要介紹了使用Autowired為什么會(huì)被IDEA警告,應(yīng)該怎么修改最佳,除了使用@Autowired以外,我們其實(shí)也有幾種好用的方式,使用@Resource替代@Autiwired方法是其中一種,只需要改變一個(gè)注解,這里就不展示了,需要的朋友可以參考下2023-02-02Day16基礎(chǔ)不牢地動(dòng)山搖-Java基礎(chǔ)
這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08