提供了一系列静态方法用于科学计算。
绝大部分方法都有重载,支持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)
:四舍五入取整BigInteger可以表示不可变的任意精度的整数。提供java.lang.Math
的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。
// 利用字符串创建
BigInteger b1 = new BigInteger("1");
// 利用long创建
BigInteger b2 = BigInteger.valueOf(1L);
BigInteger abs()
:返回绝对值BigInteger add(BigInteger val)
:求this + val
BigInteger subtract(BigInteger val)
:求this - val
BigInteger multiply(BigInteger val)
:求this * val
BigInteger divide(BigInteger val)
:求this / val
,保留整数部分BigInteger remainder(BigInteger val)
:求this % val
BigInteger divideAndRemainder(BigInteger val)
:返回包含this / val
和this % val
两个值的数组BigInteger pow(int exponent)
:求this ^ exponet
,指数exponetBigDecimal表示不可变、任意精度的浮点数,一般的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 + val
BigDecimal subtract(BigDecimal val)
:求this - val
BigDecimal multiply(BigDecimal val)
:求this * val
BigDecimal 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 % val
BigDecimal divideAndRemainder(BigDecimal val)
:返回包含this / val
和this % val
两个值的数组BigDecimal pow(int exponent)
:求this ^ exponet
,指数exponeDecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123
)、浮点数 (123.4
)、科学记数法表示的数 (1.23E4
)、百分数 (12%
) 和金额 ($123
)。
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