math.pow()函数用法

2 篇文章 0 订阅

Math.pow(底数x,指数y)

举一个简单的例子:

int a=3;
int b=3;
int c = (int) Math.pow(a, b);
System.out.println(c);

结果: 输出27。 实际上这里就是计算3的三次方。

基础用法:用math.pow()实现数组的交错求和

int ant=0;
int a =0;
int[] b = {1,2,3,4,5,6,7,8,9};

for(int i =0; i< b.length; i++) {
    a += b[i] * Math.pow(-1, ant);
    ant++;
}

System.out.println(a);

结果:输出5。

说明:上面这个例子用了一个从1到9的数组,进行了数组交错求和,1-2+3-4+5-6+7-8+9=5

效果:a=b[0]-b[1]+b[2]-b[3]+b[4]....

可能导致错误的情况:

1.如果底数 x 为负数并且指数 y 不是整数,将会返回NaN。

double a =  Math.pow(-1, 1.2);
System.out.println(a);

结果: NaN

2.如果底数 x 是 0,指数 y 是负数,将会返回Infinity (无穷)。

double a =  Math.pow(0, -1);
System.out.println(a);

结果: Infinity 

从数学的角度来讲:0的负1次方无意义。因为一个数的负1次方是这个数的倒数,而0不能作为分母,所以0的负1次方无意义

3.如果返回值太大,将会返回Infinity (无穷)。

double a =  Math.pow(10, 309);
System.out.println(a);

结果: Infinity,这里10的309次方超过了double的上限。

扩展一下基础的数学知识方便理解:Math.pow(底数x,指数y)

1. 当指数为-1时,也就是去求 1/x

double a =  Math.pow(100, -1);
double b =  Math.pow(0, -1);
double c =  Math.pow(-100, -1);

System.out.println(a);
System.out.println(b);
System.out.println(c);

结果:

 0的负一次方等于无穷的原因在上面有讲,不知道可以回上面看看。

 

2. 当指数为0时,也就是去求x的0次方,那么结果一定是返回1.0

double a =  Math.pow(2147483647, 0);
double b =  Math.pow(0, 0);
double c =  Math.pow(-2147483648, 0);
System.out.println(a);
System.out.println(b);
System.out.println(c);

结果:

这里用了int的边界值来测试。

3.  当指数为0.5(1/2)时,也就是去求 根号x

double a =  Math.pow(100, 0.5);
double b =  Math.pow(0, 0.5);
double c =  Math.pow(-100, 0.5);
System.out.println(a);
System.out.println(b);
System.out.println(c);

结果:

根号100等于10.

根号0等于0。

根号-100出现了NaN。 对于实数而言,偶次根式下面的实数,必须要是非负数,其实这里还涉及到了虚数这个概念,不过Math.pow似乎不区分这类情况,所以感兴趣再去了解这个概念吧,这里不做讲解了。

------------------------------------------------------------------------------------------

这里    int c=(int)Math.pow(a,b)  中添加了一个(int),这是强制类型转换(cast),

之所以要用是因为Math.pow(a,b) 的计算结果返回是double类型,double类型转换为int类型就需要用到。

我们可以看看如果不加(int) ,程序是会提示你去 Cast to 'int' 

  • 65
    点赞
  • 249
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值