A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mulua 中级黑马   /  2013-7-2 07:01  /  4459 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

2的3次方怎么写啊,我用pow      提示没有这个函数,,导过包了java.lang.math

点评

Math.pow(2,1/3); 2 的 立方根。。。。。。我以前做机械工程复杂计算的时候手里没装matlab 就拿java 解决的。。。。。感觉很奇异。。。。。  发表于 2013-7-13 13:20

14 个回复

倒序浏览
  1. class  Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(1<<3);
  6.         }
  7. }
复制代码
利用位运算是比较有效率的!

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
Math.pow(2,3);

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
2*2*2也行啊{:soso_e113:}
回复 使用道具 举报 1 0
支持顶楼的,二楼的也不错,也支持。
回复 使用道具 举报
java.lang包是默认包含的,不用导入,所以Math类可以直接使用。即使要导入,Math是类,也应该是java.lang.Math而不是java.lang.math。

单纯需要使用2的三次方,可以用移位运算, 一个数左移几位就表示乘以2的几次方,1 << 3这个就等于1 * (2的三次方)相当于2的三次方。

5 << 3等于5 * (2的三次方)等于40,如果要求5的三次方,用Math.pow(5,3)。

特别要注意Math.pow运算返回的数据类型为double,如:
int i = 5;
//!  i = Math.pow(i, 3);    // error: 编译报错,找到double,需要int,可能损失精度。
i = (int)Math.pow(i, 3);   // ok: 需要把double强制转换为int后才能赋给int值。

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
java中没有2进制的数据类型,对二进制的操作,需要使用共三种操作符。
<<  左移位操作符
>>  右移位操作符
>>> 无符号右移操作符使用左移时,数会变大,很多时间,用来代替“乘方”的操作。
比如2的平方 = 2 * 2 = 4 = 2<<1
2的3次方 = 2 * 2 * 2 = 8 = 2<<2
另外,一定要注意>>  >>>的差别。
回复 使用道具 举报
Math.pow(2,3);  这个方法相对好
回复 使用道具 举报
二楼的方法确实好,用左移。正数的左移:<< x左移x位,等于 x*2^x;
回复 使用道具 举报
移位运算是最方便的  2<<2
回复 使用道具 举报
2<<2

位运算符是效率最高的
回复 使用道具 举报
  1. public class MathDemo {

  2.         public static void main(String[] args) {
  3.                
  4.                 System.out.println(Math.pow(2, 3));
  5.         }

  6. }
复制代码
首先这个包是默认,不用导入;
我调用的方法没有问题,应该是你定义的类名和这个工具类重复了,所以调用时候系统会这么提示。

当然位运算效率是比较高的,如:左移
回复 使用道具 举报
额。。。。。2的立方根  是 Math.pow(2,1/3);。。。。。。。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
Math.pow(2,3);   也可以用移位运算1<<3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马