一、使用DecimalFormat類實現精確的數值取捨
Java中提供了DecimalFormat類來格式化double數值,從而實現對數值的精確取捨。DecimalFormat默認的保留位數是一位,我們可以通過定義pattern來指定需要保留的小數位。例如,下面的代碼將保留小數點後兩位:
double num = 10.987654; DecimalFormat df = new DecimalFormat("0.00"); String result = df.format(num); System.out.println(result); // 輸出:10.99
在這個示例代碼中,使用DecimalFormat類來定義了一個格式化的pattern,即”0.00″,表示需要保留小數點後兩位。然後,使用df.format(num)方法將double類型的數值num格式化成字符串類型的result,即輸出的結果。
二、使用BigDecimal類進行數值取捨
Java中提供了BigDecimal類可以實現高精度的數值計算。對於需要進行高精度數值取捨的場景,可以結合使用BigDecimal和RoundingMode類來實現。
舉個例子,在計算1.005 * 100時,我們期望得到的結果是100.5,而在使用double類型進行計算時,得到的結果卻是100.49999999999999。如果想要得到精確的結果,可以使用BigDecimal來實現:
BigDecimal num1 = new BigDecimal("1.005"); BigDecimal num2 = new BigDecimal("100"); BigDecimal result = num1.multiply(num2).setScale(2, RoundingMode.HALF_UP); System.out.println(result); // 輸出:100.51
在這個示例代碼中,定義了兩個BigDecimal對象,分別表示1.005和100,然後使用multiply()方法來進行乘法計算,得到一個新的BigDecimal對象result。在使用setScale()方法設置保留位數時,需要傳入兩個參數,第一個參數為保留的小數位數,第二個參數為RoundingMode枚舉類型,表示數值的取捨規則。在本例中,我們使用HALF_UP取捨規則進行四捨五入取捨,並保留兩位小數。
三、使用Math.round()方法進行取捨
除了使用DecimalFormat和BigDecimal類,我們也可以使用Math類提供的round()方法來進行數值的保留。這個方法可以對一個double類型的數值進行四捨五入的取捨,並返回一個long類型的數值。
double num = 10.987654; long result = Math.round(num * 100); System.out.println(result / 100.0); // 輸出:10.99
在這個示例代碼中,我們將數值10.987654乘以100,得到一個整數1098。然後使用Math.round()方法對這個整數進行四捨五入的取捨,得到一個新的long類型的整數result,即1099。最後,將result除以100.0,得到一個double類型的數值,即輸出的結果10.99。
原創文章,作者:BYPUX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/335023.html