我们使用DecimalFormat来格式化数字。
DecimalFormat中有几个特殊的字符需要说明:
0 代表阿拉伯数字,使用特殊字符0表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符'#'表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符,如果该位不存在数字,则不显示。
. 代表小数分隔符或货币小数分隔符
- 代表负号
, 代表分隔符
% 代表放置在数字的前缀和后缀,将数字乘以100显示位百分数
\u00A4 代表放置在数字前缀或后缀,做为货币记号
代码示例如下:
import java.text.DecimalFormat;
/**
* @author qx
* @date 2023/06/10
* @desc DecimalFormat测试
*/
public class DecimalFormatDemo {
public static void main(String[] args) {
simpleFormat("000000.000", 123.78);
simpleFormat("######.###", 123.78);
simpleFormat("#%", 0.5);
simpleFormat("\u00A4#", 20);
}
private static void simpleFormat(String pattern, double value) {
DecimalFormat decimalFormat = new DecimalFormat(pattern);
String output = decimalFormat.format(value);
System.out.println(output);
}
}
程序执行结果:
000123.780
123.78
50%
¥20
二、Math类
ceil:返回大于等于参数的最小整数
floor: 返回小于等于参数的最大整数
round:将参数加上0.5后返回与参数最近的整数
max(a,b):返回两个数之间的最大值
min(a,b): 返回两个数之间的最小值
abs:返回参数的绝对值
示例代码如下:
/**
* @author qx
* @date 2023/06/10
* @desc
*/
public class MathDemo {
public static void main(String[] args) {
// 输出4.0
System.out.println(Math.ceil(3.5));
// 输出3.0
System.out.println(Math.floor(3.5));
// 输出4
System.out.println(Math.round(3.5));
// 输出8
System.out.println(Math.max(3, 8));
// 输出2
System.out.println(Math.min(3, 2));
// 输出3.2
System.out.println(Math.abs(-3.2));
}
}
用于实现更大的整数。
add:加法
subtract:减法
multiply:乘法
divide:除法
示例代码如下:
import java.math.BigInteger;
/**
* @author qx
* @date 2023/06/10
* @desc BigInteger测试
*/
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger b1 = new BigInteger("987654321");
BigInteger b2 = new BigInteger("123456789");
System.out.println("加法:" + b1.add(b2));
System.out.println("减法:" + b1.subtract(b2));
System.out.println("乘法:" + b1.multiply(b2));
System.out.println("除法:" + b1.divide(b2));
}
}
BigDecimal和BigInteger都可以实现大数字的运算,不同的是BigDecimal加入了小数的概念。一般的float和double只可以用来做科学计算或工程计算,但是做不了商业计算,实现不了高精度的计算。所以要用到BigDecimal实现如何精度的计算。
add:加法
subtract:减法
multiply:乘法
divide(BigDecimal divisor,int scale,RoundingMode roundingMode):除法 方法中的3个参数分别代表除数、商的小数点后的位数、近似处理模式。
RoundingMode.HALF_DOWN:对商进行四舍五入的操作,如果商的最后一位小于等于5,则舍弃。如果最后一位大于5,则进位操做,如7.5~7
RoundingMode.HALF_UP:对商进行四舍五入的操作,如果商的最后一位小于等于5,则舍弃。如果最后一位大于5,则进位操做,如7.5~8
示例代码如下:
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @author qx
* @date 2023/06/10
* @desc BigDecimal测试
*/
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal b1 = new BigDecimal("0.009");
BigDecimal b2 = new BigDecimal("0.001");
// 加法
System.out.println(b1.add(b2));
// 减法
System.out.println(b1.subtract(b2));
// 乘法
System.out.println(b1.multiply(b2));
// 除法 保留5位小数 四舍五入
System.out.println(b1.divide(b2, 5, RoundingMode.HALF_UP));
}
}
程序执行结果
0.010
0.008
0.000009
9.00000