一、数字格式化
我们使用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.0System.out.println(Math.ceil(3.5));// 输出3.0System.out.println(Math.floor(3.5));// 输出4System.out.println(Math.round(3.5));// 输出8System.out.println(Math.max(3, 8));// 输出2System.out.println(Math.min(3, 2));// 输出3.2System.out.println(Math.abs(-3.2));}
}
三、BigInteger类
用于实现更大的整数。
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
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