Java中数学相关类的使用教程
作者:鱼找水需要时间
Java是一种广泛使用的编程语言,它提供了许多数学运算的函数和方法,使得开发者可以轻松地进行各种数学计算,下面这篇文章主要给大家介绍了关于Java中数学相关类使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
1.java.lang.Math
java.lang.Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象。
public static double abs(double a)
:返回 double 值的绝对值。
double d1 = Math.abs(-5); //d1的值为5 double d2 = Math.abs(5); //d2的值为5
public static double ceil(double a)
:返回大于等于参数的最小的整数。
double d1 = Math.ceil(3.3); //d1的值为 4.0 double d2 = Math.ceil(-3.3); //d2的值为 -3.0 double d3 = Math.ceil(5.1); //d3的值为 6.0
public static double floor(double a)
:返回小于等于参数最大的整数。
double d1 = Math.floor(3.3); //d1的值为3.0 double d2 = Math.floor(-3.3); //d2的值为-4.0 double d3 = Math.floor(5.1); //d3的值为 5.0
public static long round(double a)
:返回最接近参数的 long。(相当于四舍五入方法)
long d1 = Math.round(5.5); //d1的值为6 long d2 = Math.round(5.4); //d2的值为5 long d3 = Math.round(-3.3); //d3的值为-3 long d4 = Math.round(-3.8); //d4的值为-4
- public static double pow(double a,double b):返回a的b幂次方法
- public static double sqrt(double a):返回a的平方根
- public static double random():返回[0,1)的随机值
- public static final double PI:返回圆周率
- public static double max(double x, double y):返回x,y中的最大值
- public static double min(double x, double y):返回x,y中的最小值
- 其它:acos,asin,atan,cos,sin,tan 三角函数
double result = Math.pow(2,31); double sqrt = Math.sqrt(256); double rand = Math.random(); double pi = Math.PI;
2.java.math包
2.1 BigInteger
- Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的,最大为263-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。
- java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
- 构造器
- BigInteger(String val):根据字符串构建BigInteger对象
- 方法
- public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。
- BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger
- BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger
- BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger
- BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数相除只保留整数部分。
- BigInteger remainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。
- BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。
- BigInteger pow(int exponent) :返回其值为 (this^exponent) 的 BigInteger。
@Test public void test01(){ //long bigNum = 123456789123456789123456789L; BigInteger b1 = new BigInteger("12345678912345678912345678"); BigInteger b2 = new BigInteger("78923456789123456789123456789"); //System.out.println("和:" + (b1+b2));//错误的,无法直接使用+进行求和 System.out.println("和:" + b1.add(b2)); System.out.println("减:" + b1.subtract(b2)); System.out.println("乘:" + b1.multiply(b2)); System.out.println("除:" + b2.divide(b1)); System.out.println("余:" + b2.remainder(b1)); }
2.2 BigDecimal
- 一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。
- BigDecimal类支持不可变的、任意精度的有符号十进制定点数。
- 构造器
- public BigDecimal(double val)
- public BigDecimal(String val)
- 常用方法
- public BigDecimal add(BigDecimal augend)
- public BigDecimal subtract(BigDecimal subtrahend)
- public BigDecimal multiply(BigDecimal multiplicand)
- public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode):divisor是除数,scale指明保留几位小数,roundingMode指明舍入模式(ROUNDUP :向上加1、ROUNDDOWN :直接舍去、ROUNDHALFUP:四舍五入)
@Test public void test03(){ BigInteger bi = new BigInteger("12433241123"); BigDecimal bd = new BigDecimal("12435.351"); BigDecimal bd2 = new BigDecimal("11"); System.out.println(bi); // System.out.println(bd.divide(bd2)); System.out.println(bd.divide(bd2, BigDecimal.ROUND_HALF_UP)); System.out.println(bd.divide(bd2, 15, BigDecimal.ROUND_HALF_UP)); }
2.3 java.util.Random
用于产生随机数
- boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。
- void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。
- double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。
- float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。
- double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。
- int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
- int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
- long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
@Test public void test04(){ Random r = new Random(); System.out.println("随机整数:" + r.nextInt()); System.out.println("随机小数:" + r.nextDouble()); System.out.println("随机布尔值:" + r.nextBoolean()); }
附:更多java数学函数Math类实例
Math.abs(12.3); //12.3 返回这个数的绝对值 Math.abs(-12.3); //12.3 Math.copySign(1.23, -12.3); //-1.23,返回第一个参数的量值和第二个参数的符号 Math.copySign(-12.3, 1.23); //12.3 Math.signum(x); //如果x大于0则返回1.0,小于0则返回-1.0,等于0则返回0 Math.signum(12.3); //1.0 Math.signum(-12.3); //-1.0 Math.signum(0); //0.0 //指数 Math.exp(x); //e的x次幂 Math.expm1(x); //e的x次幂 - 1 Math.scalb(x, y); //x*(2的y次幂) Math.scalb(12.3, 3); //12.3*2³ //取整 Math.ceil(12.3); //返回最近的且大于这个数的整数13.0 Math.ceil(-12.3); //-12.0 Math.floor(12.3); //返回最近的且小于这个数的整数12.0 Math.floor(-12.3); //-13.0 //x和y平方和的二次方根 Math.hypot(x, y); //√(x²+y²) //返回概述的二次方根 Math.sqrt(x); //√(x) x的二次方根 Math.sqrt(9); //3.0 Math.sqrt(16); //4.0 //返回该数的立方根 Math.cbrt(27.0); //3 Math.cbrt(-125.0); //-5 //对数函数 Math.log(e); //1 以e为底的对数 Math.log10(100); //10 以10为底的对数 Math.log1p(x); //Ln(x+ 1) //返回较大值和较小值 Math.max(x, y); //返回x、y中较大的那个数 Math.min(x, y); //返回x、y中较小的那个数 //返回 x的y次幂 Math.pow(x, y); Math.pow(2, 3); //即2³ 即返回:8 //随机返回[0,1)之间的无符号double值 Math.random(); //返回最接近这个数的整数,如果刚好居中,则取偶数 Math.rint(12.3); //12.0 Math.rint(-12.3); //-12.0 Math.rint(78.9); //79.0 Math.rint(-78.9); //-79.0 Math.rint(34.5); //34.0 Math.rint(35.5); //36.0 Math.round(12.3); //与rint相似,返回值为long //三角函数 Math.sin(α); //sin(α)的值 Math.cos(α); //cos(α)的值 Math.tan(α); //tan(α)的值 //求角 Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z) Math.acos(y/z); //返回角度值[0~π] arc cos(y/z) Math.atan(y/x); //返回角度值[-π/2,π/2] Math.atan2(y-y0, x-x0); //同上,返回经过点(x,y)与原点的的直线和经过点(x0,y0)与原点的直线之间所成的夹角 Math.sinh(x); //双曲正弦函数sinh(x)=(exp(x) - exp(-x)) / 2.0; Math.cosh(x); //双曲余弦函数cosh(x)=(exp(x) + exp(-x)) / 2.0; Math.tanh(x); //tanh(x) = sinh(x) / cosh(x); //角度弧度互换 Math.toDegrees(angrad); //角度转换成弧度,返回:angrad * 180d / PI Math.toRadians(angdeg); //弧度转换成角度,返回:angdeg / 180d * PI
总结
到此这篇关于Java中数学相关类使用的文章就介绍到这了,更多相关Java数学相关类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!