更新時間:2022-10-12 10:38:49 來源:動力節點 瀏覽3118次
在 Java 中,當我們在變量前使用雙精度數據類型時,它表示小數點后 15 位。但有時我們只需要小數點后兩位小數,比如代表盧比和其他單位。因此,在本節中,我們將討論顯示雙精度至小數點后兩位的方法以及適當的示例和 Java 程序。
Java 提供了以下三種方法來顯示 2 位小數的雙精度:
使用 DecimalFormat ("0.00")
使用 String.format() 方法 ("%.2f")
使用 BigDecimal
讓我們一一討論上述方法。
Java DecimalFormat是 NumberFormat 類的具體子類,用于格式化十進制數。該類提供了setRoundingMode()方法來顯示最多兩位小數的雙精度數。
句法:
公共無效 setRoundingMode(RoundingMode 舍入模式)
它接受舍入模式作為參數并覆蓋NumberFormat類的 setRoundingMode() 方法。如果我們沒有指定任何 roundingMode ,它會拋出NullPointerException 。
我們使用了 DecimalFormat 類的另一種方法是format()方法。它格式化一個字符串以產生一個字符串。
句法:
public StringBuffer 格式(雙 數,StringBuffer 結果,FieldPosition fieldPosition)
該方法接受三個參數編號、結果和位置。但最后兩個參數是可選的。它返回格式化的數字字符串。如果RoundingMode設置為UNNECESSARY,該方法將引發ArithmeticException 。
TwoDecimalPlace1.java
導入 java.math.RoundingMode;
導入 java.text.DecimalFormat;
公共類 TwoDecimalPlace1
{
// DecimalFormat 類的構造函數
私有靜態最終 DecimalFormat decfor = new DecimalFormat( "0.00" );
公共靜態無效 主(字符串參數 [])
{
//定義一個double類型的數字
雙 數 = 123.9876543567 ;
System.out.println( "雙數:" + num);
System.out.println( "雙數:" + decfor.format(num)); //123.99
//十進制格式,默認為RoundingMode.HALF_EVEN
decfor.setRoundingMode(RoundingMode.DOWN);
System.out.println( "\n四舍五入前:" + decfor.format(num)); //123.98
decfor.setRoundingMode(RoundingMode.UP);
System.out.println( "四舍五入后:" + decfor.format(num)); //123.99
}
}
輸出:
雙號:123.9876543567
雙數:123.99
舍入前:123.98
四舍五入后:123.99
Java 還提供了 format() 方法來格式化數字。它屬于 String 類。通過使用該方法,可以相應地格式化任何數字和字符串。
為了將數字更改為最多兩位小數,我們使用%.2f來格式化數字。請注意,我們不能在 String.format() 方法中四舍五入,總是四舍五入。
句法:
公共靜態 字符串格式(字符串格式,對象... args)
該方法接受以下兩個參數:
格式:這是我們想要的格式化字符串。
args:這些是格式字符串中格式說明符引用的參數。
它返回格式化的字符串。如果格式字符串包含非法語法,則拋出IllegalFormatException 。如果我們將格式指定為 null,它也會拋出NullPointerException 。
TwoDecimalPlace2.java
公共類 TwoDecimalPlace2
{
公共靜態無效 主(字符串參數 [])
{
//定義一個double類型的數字
雙 數= 10.98765432167 ;
System.out.println( "雙數:" + num);
//使用以下兩個語句中的任何一個來保留兩位小數都給出相同的結果
System.out.println( "雙數:" + String.format( "%.2f" , num));
System.out.format( "雙數:%.2f" , num);
}
}
輸出:
雙號:10.98765432167
雙數:10.99
雙數:10.99
我們還可以使用 Java BigDecimal 類來顯示最多兩位小數的數字。它屬于java.math.BigDecimal包。它擴展了 Number 類并實現了Comparable接口。
該類提供了 setScale() 方法。語法如下:
句法:
setScale( int newScale, RoundingMode roundingMode)
該方法接受兩個參數:
newScale:要返回的 BigDecimal 值的小數位數。
roundingMode:我們要應用的舍入模式。
它返回 BigDecimal,其標度為指定值,其未標度值通過將此 BigDecimal 的未標度值乘以或除以適當的 10 次方來確定,以保持其整體值。
如果RoundingMode設置為UNNECESSARY,該方法將引發ArithmeticException。RoundingMode 是提供上述 RoundingMode 的枚舉。
我們在這個程序中使用的另一種方法是BigDecimal.doubleValue()。它將 BigDecimal 轉換為雙精度數。讓我們看一個例子。
TwoDecimalPlace3.java
導入 java.math.BigDecimal;
導入 java.math.RoundingMode;
公共類 TwoDecimalPlace3
{
公共靜態無效 主(字符串參數 [])
{
//定義一個double類型的數字
雙 數= 12.4565652239 ;
System.out.println( "雙數:" + num);
BigDecimal bd = new BigDecimal(num).setScale( 2 , RoundingMode.HALF_UP);
雙 newNum = bd.doubleValue();
System.out.println( "最多保留兩位小數:" + newNum);
}
}
輸出:
雙號:12.4565652239
最多兩位小數:12.46
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習