大家好。这是我的第一篇博文,其实是我的老师布置的作业。好吧,闲话少说,下面进入正题。我学的是JAVA,所以就来说说JAVA中的Math类吧。Math类在编程中常被用于计算商业驱动程序、动态显示布局、用于游戏界面/功能的随机活动,以及程序需要的代数和三角函数功能。高级的数学计算需要使用到函数和常量方程。Math类包含了各种方法和常量,用于协助解决数学计算。阅读完本章,你将非常轻松自如地使用Math类。
使用Math类不仅仅是进行加减乘除。Math的各种方法和常量可以进行算数和三角计算,以及产生随机数。这些方法和常量与计算器上的按键很相似,比如正弦、正切和 。Math类是一个静态类,因此不必声明一个Math类的对象再使用其方法和常量。不必使用new创建一个类对象注册成为类成员,而只需要在类本身调用方法或属性即可,就像这样:Math. method();或Math.CONSTANT;。Math类同时也包括不会改变的静态常量,比如PI(3.141592653589793)和E(2.71828182845905)。可以在Flash的帮助文档中查询"Math class"查看。
Math类基本方法
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Math类的误区
性能测试:var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.floor(num);
}
trace(getTimer() - time);
// 结果:1865
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
int(num);
}
trace(getTimer() - time);
// 结果:69
仔细看官方解释,其实floor不是一个真正我们所理解的取整函数,他是去找最接近自己,且比自己小或者等于的整数,那这是什么意思呢?
trace(int(num));
trace(Math.floor(num));
// 结果1:-3
// 结果2:-4
但是实际上,如果你这样去使用int(),跟floor输出的结果相同:
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
if(num < 0){
int(num) - 1;
}else{
int(num);
}
}
trace(getTimer() - time);
// 结果:132
2、Math.pow()
对于这个方法,我也不知道说什么好了,先看性能测试吧:
var b:int = 4;
var c:int = 5;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
c * c == a * a + b * b;
}
trace(getTimer() - time);
// 结果:95
var b:int = 4;
var c:int = 5;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.pow(c,2) == Math.pow(a,2) + Math.pow(b,2);
}
trace(getTimer() - time);
// 结果:7999
难道大家又想说Adobe傻逼了?这儿我为它平反吧。
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.pow(num,10000);
}
trace(getTimer() - time);
// 结果:6682
而且pow其实是可以这样用的:(数学学得好都知道开方其实是可以转换成乘方来算的)
trace(Math.pow(256,1/4));
trace(Math.pow(3125,1/5));
3、Math.round()
这个方法跟floor一样的,先看性能测试:
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.round(num);
}
trace(getTimer() - time);
// 结果:1931
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
int(num + 0.5)
}
trace(getTimer() - time);
// 结果:68
就到这吧,其实我也是上网找的。