大于3小于4的整数bleem_JavaScript用Math.round()将一个数四舍五入到整数

e3b7e843058313f9e61a07a6a5c56cc3.png

1. 基本概念

Math.round()方法用于将它的参数四舍五入到最接近的整数,如果最接近的整数有两个(此时参数的小数部分为0.5),那么结果就是更接近正无穷的那一个(或者说数值较大的那一个);如果它的参数原本就是整数,那么结果就是该参数自身。

Math.round()方法的语法形式如下所示:

Math.round(x);

根据上面的说明我们可知,参数x应该是一个数字,即Number类型。如果你传递的x不是Number类型的,那么它会先被转换成Number类型,再进行四舍五入。

由于JavaScript数字类型的特殊性,Math.round()的返回值由以下规则详细决定。这些规则中提到的x的值指的是x转换为数字后的值,如果它之前不属于数字类型的话。

1. 如果x是NaN,那么结果也是NaN;

2. 如果x是+0,那么结果也是+0;

3. 如果x是-0,那么结果也是-0;

4. 如果x是正无穷(+Infinity),那么结果也是正无穷;

5. 如果x是负无穷(-Infinity),那么结果也是负无穷;

6. 如果x大于0且小于0.5,那么结果将是+0;

7. 如果x小于0且大于或等于-0.5,那么结果将是-0;

8. 其余情况,结果就是最接近x的整数;如果最接近的整数有两个,那么结果就是更接近于正无穷的那一个;如果x本身就是整数,那么结果就是x本身。

这些规则看似很多,其实原理都是将x舍入到最接近的整数,只是需要考虑NaN、+0、-0、+Infinity和-Infinity这几个特殊值而已。

对于正数,JavaScript通常不显示它的正号。所以,在后面的示例中当我们打印值为+0和+Infinity的结果时,你会看到打印结果为0和Infinity。

2. 示例

首先,我们先来看看参数为一般数字时(即参数属于上面的第8条规则)的情况,此时的执行结果如图1所示。

<script>    var value1 = Math.round(4.3);    console.log("Math.round(4.3):");    console.log(value1);    var value2 = Math.round(18.7);    console.log("\nMath.round(18.7):");    console.log(value2);    var value3 = Math.round(6.5);    console.log("\nMath.round(6.5):");    console.log(value3);    var value4 = Math.round(-9.4);    console.log("\nMath.round(-9.4):");    console.log(value4);    var value5 = Math.round(-25.8);    console.log("\nMath.round(-25.8):");    console.log(value5);    var value6 = Math.round(-21.5);    console.log("\nMath.round(-21.5):");    console.log(value6);script>

08f0e639c08383eb70614066a0052389.png

图1 参数为一般数字时的执行结果

然后,我们再来看看参数或结果为特殊数字的情况(即上面的第1至第7条规则),它的执行结果如图2所示。

<script>    /* 规则1 */    var value1 = Math.round(NaN);    console.log("Math.round(NaN):");    console.log(value1);    /* 规则2 */    var value2 = Math.round(+0);    console.log("\nMath.round(+0):");    console.log(value2);    /* 规则3 */    var value3 = Math.round(-0);    console.log("\nMath.round(-0):");    console.log(value3);    /* 规则4 */    var value4 = Math.round(+Infinity);    console.log("\nMath.round(+Infinity):");    console.log(value4);    /* 规则5 */    var value5 = Math.round(-Infinity);    console.log("\nMath.round(-Infintiy):");    console.log(value5);    /* 规则6 */    var value6 = Math.round(0.34);    console.log("\nMath.round(0.34):");    console.log(value6);    /* 规则7 */    var value7 = Math.round(-0.34);    console.log("\nMath.round(-0.34):");    console.log(value7);script>

0f3fd3a2f3cca668d20586ff219ce086.png

图2 参数或结果为特殊数字时的执行结果

最后,我们再来看看参数不是数字类型的情况,此时的参数会被先自动转换为数字类型;执行结果如图3所示。

<script>    /* 字符串"49.25"转换成数字为49.25 */    var value1 = Math.round("49.25");    console.log('Math.round("49.25"):');    console.log(value1);    /* 布尔值true转换成数字为1 */    var value2 = Math.round(true);    console.log("\nMath.round(true):");    console.log(value2);    /* document对象转换成数字为NaN */    var value3 = Math.round(document);    console.log("\nMath.round(document):");    console.log(value3);    /* null转换成数字为+0 */    var value4 = Math.round(null);    console.log("\nMath.round(null):");    console.log(value4);script>

173798041d15e86037b751a4c51a8b4a.png

图3 参数需要类型转换时的执行结果

(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值