今天在進行開發的過程中遇到了一個小問題,是關于如何將double類型的數據保留兩位小數。突然發現這方面有一點欠缺,就來總結一下。
一、String類的方式
該方式是是使用String的format()方法來實現的,該方法的作用就是規范數據的格式,第一個參數傳入一個字符串來表示輸出的數據格式,如保留兩位小數就使用“%.2f”,第二個參數是要進行格式化的數據。實例如下:
double testDounle_01 = 123.456; float testFloat_01 = 456.125f; /** * 使用string類的方式 * */ System.out.println("使用string類的方式"); System.out.println(String.format("%.2f", testDounle_01)); System.out.println(String.format("%.2f", testFloat_01));
二、DecimalFormat類
DecimalFormat類主要就是用于格式化十進制數據的,這個類是NumberFormat 的一個具體子類,操作和使用起來都比較方便。在使用的時候需要實例化這個類,構造函數中傳入數據的格式類型。
其中各個符號的含義如下:
使用案例如下:
/** * 測試保留兩位小數 */ public static void testDoubleToTwo() { /** *DecimalFormat類 */ DecimalFormat decimalFormat = new DecimalFormat("#.00"); String ans_3 = decimalFormat.format(testDounle_01); System.out.println(ans_3); }
三、BigDecimal類進行數據處理
java.math包中提供的API類BigDecimal,是用來對超過16位有效位的數進行精確的運算。雙精度浮點型變量double可以處理16位有效數。但是也可以用來定義小數點后兩位,但是使用起來比較麻煩,不太推薦使用。
double testDounle_01 = 123.456; float testFloat_01 = 456.125f; /** * BigDecimal類進行數據處理 * */ BigDecimal bigDecimal = new BigDecimal(testDounle_01); double ans_2 = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(ans_2);
四、NumberFormat類進行數據處理
NumberFormat類是數據格式化類,使用該類將浮點數保留二進制的方法和BigDecimal類似,但是使用起來也是十分的麻煩。
double testDounle_01 = 123.456; float testFloat_01 = 456.125f; /** * NumberFormat類進行數據處理 * */ NumberFormat numberInstance = NumberFormat.getNumberInstance(); // 設置最大小數點位數 numberInstance.setMaximumFractionDigits(2); // 設置數據舍入類型 numberInstance.setRoundingMode(RoundingMode.HALF_UP); System.out.println(numberInstance.format(testDounle_01));
總結一下
對于將浮點型數據保留兩位小數,我比較推薦的還是前兩種方法,或者是直接使用String.format()方法,
到此這篇關于淺談Java中浮點型數據保留兩位小數的四種方法的文章就介紹到這了,更多相關Java浮點型保留兩位小數內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_44985880/article/details/120512282