在JavaScript开发中,除了简单加减乘除运算之外,有时候开发,特别是动画或者游戏开发中,需要使用复杂的数学运算。JavaScript中Math对象提供了一系列属性和方法,能够满足大多数场合的需要。
Math对象常用的属性是Math.PI,这个属性在很多角度计算上需要使用到。
Math对象方法
ceil()表示向上舍入,把数字向上舍入到最接近的整数。
floor()表示向下舍入,把数字向下舍入到最接近的一个整数。
round()表示通常的四舍五入方法舍入为最接近的整数
random()方法是Math对象一个非常常用的方法。返回一个0-1之间的随机数,但是不包括0和1。random()函数用途最多的是返回一个指定范围内的随机数,但是本身random()返回的值是0-1之间的数值,但是不包括0和1,所以我们需要改造一下这个函数,使得可以返回可以指定范围内的随机数。
<script type="text/javascript"> document.write("Using the Math.random() method!<br/>"); document.write(Math.random()); document.write(Math.floor(Math.random()*100+1));//1-100之间的随机整数,包括1 //使用random()和floor()方法获得某个范围内的随机数 var number=Math.floor(Math.random()*total_number_of_choices+first_possible_value); </script>
在有的应用场合,我们防止一个请求会被CDN或者代理服务器缓存相关的数据值,我们需要在请求的后面加上一个时间戳。当然也可以用后台代码生成一个GUID来做。可以采用Math对象的方法和Date对象的方法实现。
<script type="text/javascript"> function getDataWithoutCache(URL){ var _url= URL if (!_url)return; //Clear the cache using the timestamp var timestamp = new Date(); var queryString = ""+Math.ceil(Math.random() * 9999) + timestamp.getUTCHours() + timestamp.getUTCMinutes() + timestamp.getUTCSeconds(); _url= _url+ queryString; </script>
在拼接字符串前面之所以加上双引号,是因为在JavaScript默认情况下,2个数字相加,是直接使用算术里面的加法进行的,而不是字符串拼接。如下代码输出结果是多少?
var a=10; var b=5; var result1=a+b; document.write(result1);
然后再看如下代码输出结果是多少?
var result2=" "+a+b; document.write(result2);
然后再看如下代码输出结果是多少?通过这2段代码,提醒我们平时在JavaScript开发中需要“+”操作符的使用,如果使用不当,虽然不会报错,但是后面很多代码逻辑是有问题。"+"操作符在遇到表达式中有字符串的情况下,将进行字符串拼接,返回的是一个字符串。我们可以通过Math对象的方法完成一个随机抽奖的小程序。