首页 课程 师资 教程 报名

Java显示双精度至小数点后两位的方法

  • 2022-10-12 10:38:49
  • 2763次 动力节点

在 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( "
四舍五入前:"  + 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

使用 String.format() 方法

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

使用 BigDecimal

我们还可以使用 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

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交