java.lang.Math #
提供了一系列静态方法用于科学计算。
常用方法 #
绝对值、最大最小值 #
绝大部分方法都有重载,支持int、long、float、double
int abs(int a):绝对值int max(int a,int b):最大值int min(int a,int b):最小值
求整 #
double ceil(double a):返回大于或等于a的最小整数double floor(double a):返回小于或等于a的最大整数double rint(double a):返回最接近a的整数,如果两个同样接近的整数,那么取偶数double round(double a):四舍五入取整
java.math.BigInteger #
BigInteger可以表示不可变的任意精度的整数。提供java.lang.Math的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。
构建实例 #
// 利用字符串创建
BigInteger b1 = new BigInteger("1");
// 利用long创建
BigInteger b2 = BigInteger.valueOf(1L);
常用方法 #
BigInteger abs():返回绝对值BigInteger add(BigInteger val):求this + valBigInteger subtract(BigInteger val):求this - valBigInteger multiply(BigInteger val):求this * valBigInteger divide(BigInteger val):求this / val,保留整数部分BigInteger remainder(BigInteger val):求this % valBigInteger divideAndRemainder(BigInteger val):返回包含this / val和this % val两个值的数组BigInteger pow(int exponent):求this ^ exponet,指数exponet
java.math.BigDecimal #
BigDecimal表示不可变、任意精度的浮点数,一般的Float类和Double类可以用来做科学计算或工程计算。但在商业计算中,要求数字精度比较高,故用到BigDecimal类。BigDecimal类支持不可变的、任意精度的有符号十进制定点数。
构建实例 #
// long
BigDecimal d1 = BigDecimal.valueOf(1L);
// double
BigDecimal d2 = BigDecimal.valueOf(1.2);
// long
BigDecimal d3 = new BigDecimal(1L);
// double
BigDecimal d4 = new BigDecimal(1.2);
// String
BigDecimal d5 = new BigDecimal("1.2");
常用方法 #
BigDecimal abs():返回绝对值BigDecimal add(BigDecimal val):求this + valBigDecimal subtract(BigDecimal val):求this - valBigDecimal multiply(BigDecimal val):求this * valBigDecimal divide(BigDecimal val):求this / val- 如果结果除不尽,会抛出
ArithmeticException异常,可以指定处理策略 BigDecimal divide(BigDecimal divisor, int scale, int roundingMode),例如BigDecimal divide = d5.divide(d4, 20, BigDecimal.ROUND_UP);
- 如果结果除不尽,会抛出
BigDecimal remainder(BigDecimal val):求this % valBigDecimal divideAndRemainder(BigDecimal val):返回包含this / val和this % val两个值的数组BigDecimal pow(int exponent):求this ^ exponet,指数expone
java.text.DecimalFormat #
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、浮点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。
常见符号 #
0 #
0出现在整数部分,表示整数位数最少为0的个数,少了就补0
DecimalFormat format = new DecimalFormat("000");
System.out.println(format.format(99)); //099
System.out.println(format.format(9999)); //9999
0出现在小数部分,表示小数位数必须为0的个数,如果多了就会四舍五入,少了就会补0
DecimalFormat format = new DecimalFormat("0.000");
System.out.println(format.format(99.99)); //99.990
System.out.println(format.format(99.9999)); //100.000
#
#出现在整数部分,并不会有格式化
DecimalFormat format = new DecimalFormat("#");
System.out.println(format.format(99)); //99
System.out.println(format.format(9999)); //9999
#出现在小数部分,表示最多为#的个数,如果少了不会补0,如果多了就四舍五入
DecimalFormat format = new DecimalFormat("#.###");
System.out.println(format.format(99.99)); //99.99
System.out.println(format.format(99.9999)); //100
% #
%的作用是将小数转换为百分比形式,搭配0和#可以格式化结果
DecimalFormat format = new DecimalFormat("#.##%");
System.out.println(format.format(0.8999)); //89.99%
System.out.println(format.format(0.89999)); //90%
其他用法 #
// 每三位使用,分割。注意只能使用 , 才会有分割效果
System.out.println(new DecimalFormat(",###").format(899677566)); // 899,677,566
// 嵌入自定义文本
System.out.println(new DecimalFormat("value is : #.###").format(3.1415)); // value is : 3.142
// 保留整数
System.out.println(new DecimalFormat("#").format(3.14)); // 3