【问题标题】:strip decimal points from variable从变量中去除小数点
【发布时间】:2011-08-03 11:32:20
【问题描述】:

好的,我知道这可能真的很容易,但我很困惑.. 我有一系列变量,其中有一个小数点和几个零。如何剥离变量,使其从 1.000 变为 1 ?不要认为这很重要,但数字是从我用 jquery 抓取的 xml 文件生成的......

var quantity = $("QTY",this).text();

提前感谢您的帮助!

【问题讨论】:

标签: javascript jquery xml frontend strip


【解决方案1】:

简单地说……

Math.round(quantity);

...假设您要将1.7 舍入为2。如果没有,请使用Math.floor1.7 转换为1

【讨论】:

    【解决方案2】:

    使用parseInt();

    parseInt("1.25");//returns 1
    parseInt("1.85");//returns 1
    parseInt(1.25);//returns 1
    parseInt(1.85);//returns 1
    

    【讨论】:

      【解决方案3】:

      你不需要 jQuery。

      你可以使用parseInt 就好了。从页面:

      document.write(parseInt("10.33") + "<br />"); // 10
      

      【讨论】:

        【解决方案4】:

        要将数字四舍五入到最接近的整数,您可以使用Math.round(),如下所示:

        Math.round("1.000"); // Will produce 1
        Math.round(123.4234); // Will produce 123
        

        【讨论】:

          【解决方案5】:

          parseInt 是最慢的方法 math.floor 是第二慢的方法

          此处未列出的更快方法是:

          var myInt = 1.85 | 0; 我的整数 = 1;

          var myInt = 1.85 >> 0; 我的整数 = 1;

          在这里完成的速度测试: http://jsperf.com/math-floor-vs-math-round-vs-parseint/2

          【讨论】:

          • 对于那些对|&gt;&gt; 运算符感到好奇的人,您可以在MDN 上了解更多信息。注意:The operands of all bitwise operators are converted to signed 32-bit integers in two's complement format.
          【解决方案6】:

          这是另一个很好的例子:

          我经常使用Math.round toLocateString 将包含小数位的数字转换为更易读的字符串,带有千位分隔符:

          var myNumberAsString = "1234567.890123"              //  "1234567.890123"
          var myNumber = Math.round(0.0 + myNumberAsString);   //  1234568
          return myNumber.toLocaleString();                    //  "1,234,568"
          

          我发现这在从 JSON Web 服务加载十进制值并需要在网页上以更友好的格式显示它们时很有用(当然,我不需要显示所有小数位)。

          【讨论】:

            【解决方案7】:

            使用number = ~~number

            这是Math.floor()的最快替代品

            【讨论】:

            • 我想这是从数字中去除小数点的最佳方法之一
            • 基于这个测试,我会说除非你是专门为使用你的 Safari 浏览器的人服务的......“最快”与 ~~ 的晦涩难懂的调试之间的权衡是不值得这样做的。 Math.floor() 给出了意图和性能。确保不完全抛弃可读性以支持较小的性能提升非常重要,我只会在性能提升的极端情况下使用它。 jsperf.com/tilde-vs-floor
            • 有时候,JS 的语法很酷 (#SugarCoatingForLife)
            【解决方案8】:

            使用Math.trunc()。它完全按照您的要求进行。它去掉了小数点。

            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc

            【讨论】:

            • 它保持符号,+/-
            【解决方案9】:

            一种更快、更有效的方法是使用 JavaScript 的 bitwise operators,如下所示:

            function stripDecimals(n) {
                 return n | 0;
            }
            
            // examples:
            stripDecimals(23.245); // => 23
            stripDecimals(100.015020); // => 100
            

            |(OR 运算符)会将数字视为 32 位(二进制 0s1s),然后根据 操作数返回所需的结果,在这种情况下会导致一个 整数 去掉所有小数位。

            【讨论】:

              【解决方案10】:

              我建议你使用一个叫做Math.trunc()...的东西,把你的号码放在括号里。我不建议您使用Math.round() 的原因是它可能会更改您的十进制数的整数部分,尽管您可以使用Math.round(),如果您知道要获得最接近的整数。

              【讨论】:

                【解决方案11】:

                Math.trunc()~~ 删除 decimal partinteger part 没有任何影响。

                例如:

                console.log(Math.trunc(3.9)) // 3
                console.log(~~(3.9)) // 3
                

                所以在你的情况下:

                console.log(Math.trunc(quantity))
                console.log(~~(quantity))
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-10-22
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多