• 取整 运算定要注意数据类型


           在学习js的过程中经常遇到需要大量计算的问题,此时就需要用到那些常见的运算符。在写代码进行数学计算的时候输入和输出的数据类型要格外注意。整数和小数,数据类型不同结果也不一样。有时会因为数据类型,导致写出的代码调试的时候出现错误,不能实现要求的功能。

           下面就一个题目来说明:

    题目:

           找出100-999之间的所有“水仙花数”。所谓水仙花数是指一个三位 数,各位数字的立方和等于该数本身。(如153=1的3次方+5的3次方+3的3次方)并输出这些数字。

           题目思路很清晰明了,主要用到for循环和if判断语句。

           开始我也觉得很简单,但上来写出来的代码却无法得出我想要的结果。

    错误代码:

    <script>

    1        for (var i = 100; i <= 999; i++) {     
    2            var x = i / 100;
    3         //x = Math.floor(x);

    4            var y = i % 100;
    5           y = y / 10;
    6         //y = Math.floor(y);
    7          var z = i % 10;

    8            if (x * x * x + y * y * y + z * z * z == i) {
    9                document.write(i);
    10                document.write("&nbsp");
                }
            }
    </script>

    注意代码中的两行注释,最初写完的代码中没有那两句,每行代码前面的数字是我故意加上便于分析原因.(原代码中没有前面的数字序号)

    这也导致,我调试运行的时候老是不出结果,检查代码也没发现问题.后来我直接给i赋值153(题目中的例子),再通过审查元素我让发现,在代码执行到第2行时,x的值是小数1.53,不是1,后面也出现了这种问题.我才发现原来是输出的数据类型有问题.随后我加了两行取整的代码,再调试就成功了.

    注意:  重要!!! 今后遇到各种运算问题时一定要注意!

    常用的三种取整

         1. Math.Round:四舍六入五取整

         2. Math.Ceiling:向上取整,只要有小数都加1

         3. Math.Floor:向下取整,总是舍去小数

    修改后正确的代码:

    <script>

            for (var i = 100; i <= 999; i++) {
               
                var x = i / 100;
                x = Math.floor(x);
                var y = i % 100;
                y = y / 10;
                y = Math.floor(y);
                var z = i % 10;

                if (x * x * x + y * y * y + z * z * z == i) {
                    document.write(i);
                    document.write("&nbsp");
                }
            }
    </script>

  • 相关阅读:
    android progressbar 水平进度条
    jquery 下拉自动加载
    jquery ajax
    input 数字,字母汉字的限制方法(转帖)
    Jquery checkbox
    js运用6
    js运用5
    js运用4
    js运用3
    js运用2
  • 原文地址:https://www.cnblogs.com/wcl2017/p/6877616.html
Copyright © 2020-2023  润新知