曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3055|回复: 0
打印 上一主题 下一主题

Math 对象

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-12-14 11:05:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Math 对象提供了许多数学功能,比如计算平方值,产生一个随机数等。Math 对象与 String 对象有  2 点不同:

1. 不能显示的创建一个 Math 对象,即不能用 new Math() 这种形式,我们直接使用它就可以了。

2. Math 对象不存储数据,这和Sring 对象  和 Date 对象 都不同。

使用 parseInt()  方法是通过消去小数点后那部分而使一个小数变为整数,比如将 3.99 去掉 .99 后变为 3 ,但这种做法不精确的做法没法满足我们在某些场合的应用。而 Math 对象提供了 3 个舍入函数,它们可以满足我们这方便的要求:

round() :当小数为 0.5 或者大于 0.5 时向上进一位。

ceil() :始终向上舍入,比如 8.89 可以变为 9,而 8.12 也同样可以变为 9 。

floor() :始终向下舍入,比如 8.89 可以变为 8,而 8.12 也同样可以变成 8 。

测试代码
[code=javascript]    <script type="text/javascript">
    var numberToRound = prompt( "Please enter a number", "" );
   
    document.write( "round() = " + Math.round( numberToRound ) );
    document.write( "<br>" );
   
    document.write( "floor() = " + Math.floor( numberToRound ) );
    document.write( "<br>" );
   
    document.write( "ceil() = " + Math.ceil( numberToRound ) );
    document.write( "<br>" );
    </script>[/mw_shl_code]
运行输出:
round() = 9
floor() = 8
ceil() = 9
注意,上面从 prompt() 那里获得的是一个字符串,但这个字符串仍然会被当作一个数,这是因为只要字符串种含有能被转换为数字的东西,那么舍入函数能够自动对其转换。


使用 random() 方法可以声称一个大于 0 而小于 1 的随机小数。我们通常会将该小数乘以某个数,然后用上面一种舍入方法而获得一个随机的整数。比如要生成 1~6 里面的一个随机数,那么我们可以通过生成的小数乘以 6 然后用 ceil() 的方法获得:
[code=javascript]<script type="text/javascript">
    var randomNum = Math.ceil( Math.random() * 6 );
    document.write( "random number is " + randomNum );
    </script>[/mw_shl_code]
注:有的资料说这种做法会偶然性的因为进位而得到 0 。倘真如此,那么可以换种更稳妥的做法:Math.round( Math.random() * 5) + 1;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-17 03:49 , Processed in 0.077322 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表