专业编程基础技术教程

网站首页 > 基础教程 正文

JavaScript用Math.round()进行四舍五入

ccvgpt 2024-09-09 02:26:28 基础教程 44 ℃


1. 基本概念

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

JavaScript用Math.round()进行四舍五入

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>


然后,我们再来看看参数或结果为特殊数字的情况(即上面的第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>


最后,我们再来看看参数不是数字类型的情况,此时的参数会被先自动转换为数字类型;执行结果如图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>


(完)

Tags:

最近发表
标签列表