RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 582163
Accepted
Max
Max
Asked:2020-10-24 21:17:25 +0000 UTC2020-10-24 21:17:25 +0000 UTC 2020-10-24 21:17:25 +0000 UTC

如何在javascript中平均划分一个数字?

  • 772
  1. 如何在javascript中划分一个数字?
  2. 有整数除法运算符吗?
javascript
  • 6 6 个回答
  • 10 Views

6 个回答

  • Voted
  1. Best Answer
    koks_rs
    2020-10-24T21:33:24Z2020-10-24T21:33:24Z

    在 JS 中有几种方法可以除以一个数字而没有余数。

    方法一、四舍五入:

    var x = 10, y = 3.3333;
    alert(Math.floor(x/y));
    

    此方法专为大于零的计算结果而设计。如果结果是否定的,那么这个设计将无法正常工作。

    例如 :

    Math.floor(-100/3); // Выдаст -34, хотя целая часть от -33,33333336 будет равна -33
    

    或者,您可以使用 if 语句通过四舍五入来解决此问题:

    if(x/y>=0)
       alert(Math.floor(x/y));
    else
       alert(Math.ceil(x/y));
    

    方法二: 可能不如前一种快,但更通用。转换为 int:

    var x = 10, y = 3.3333;
    alert(parseInt(x/y));
    

    方法三。多产且多才多艺:

    var x = 10, y = 3.3333;
    
    function div(val, by){
        return (val - val % by) / by;
    }
    
    alert(div(x, y));
    

    好吧,有点铁杆:

    alert(~~(x/y)) // сокращенный Math.floor() результаты будут такие же
    alert(x/y>>0)       
    alert(x/y|0) 
    

    jsfiddle上的演示

    • 47
  2. Grundy
    2020-10-24T21:52:24Z2020-10-24T21:52:24Z

    javascript中没有整数和浮点数的划分。
    因此,也许没有专门的整数算术运算符。

    基于此,有以下几种解决方案:

    1. 执行正常除法并取结果的整数部分。此程序有Math.floor和Math.ceil函数,区别在于选择较大的整数还是较小的整数。

      console.log(Math.floor(10 / 3));
      console.log(Math.floor(-10 / 3));
      
      console.log(Math.ceil(10 / 3));
      console.log(Math.ceil(-10 / 3));
      
       

      从示例中可以看出,对于正数它是合适floor的,对于负数ceil

    2. 使用位运算。在规范级别,说明按位运算仅适用于 32 位整数,因此在使用它们时应小心:应用于大数时,数字的高位将被截断。同时,这允许您通过在执行按位运算之前将参数转换为整数来快速获取整数部分。
      一个常见的技巧是使用按位或with 0,这会使原始数字的所有位保持不变。以及按位移位,也按 0 位

      console.log((10 / 3) | 0);
      console.log((-10 / 3) | 0);
      
      console.log((10 / 3) >> 0);
      console.log((-10 / 3) >> 0);
      
      console.log(' Неожиданно: ', (10000000000 / 2) | 0)
      console.log(' Неожиданно: ', (10000000000 / 2) >> 0)
      
       

    • 8
  3. chubatiy
    2020-10-24T21:22:59Z2020-10-24T21:22:59Z
    1. 作为除法选项,使用此结构

      function divme(a, b){
          return (a - a%b)/b
      }
      
    2. 不

    UPD:我遇到了另一个部门选项。也许它会对你有用。关联

    • 2
  4. Surfin Bird
    2020-10-24T21:26:26Z2020-10-24T21:26:26Z

    这是另一种选择:

    Math.floor(a / b);
    

    这是一个,但最好小心使用它——它只适用于小数字(最多 4e9):

    a / b | 0
    
    • 2
  5. Sasha Omelchenko
    2020-10-24T21:26:33Z2020-10-24T21:26:33Z

    这完全取决于您希望如何舍入除法结果。

    Math.floor(a/b); 
    Math.floor(3/2); // = 1
    

    关联

    Math.ceil(a/b);
    Math.ceil(3/2); // = 2;
    

    关联

    • 2
  6. Nikko Odd
    2020-06-19T16:26:38Z2020-06-19T16:26:38Z

    使用函数 Math.trunc(x);

    Math.trunc(13.37);    // 13
    Math.trunc(42.84);    // 42
    Math.trunc(0.123);    //  0
    Math.trunc(-0.123);   // -0
    Math.trunc('-1.123'); // -1
    

    MDN上的功能描述

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5