在 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
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
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习