【问题标题】:How to do integer division in javascript (Getting division answer in int not float)? [duplicate]如何在javascript中进行整数除法(在int中获取除法答案而不是float)? [复制]
【发布时间】:2013-09-26 12:16:45
【问题描述】:

Javascript 中是否有任何函数可以让您进行整数除法,我的意思是在 int 中获得除法答案,而不是在浮点数中。

var x = 455/10;
// Now x is 45.5
// Expected x to be 45

但我希望 x 为 45。我正在尝试从数字中删除最后一位。

【问题讨论】:

  • 你试过 parseInt 或 Math.floor 吗?
  • @SB 我如何使用 parseInt 来解决这个问题。
  • @Nakib, parseInt(455/10);
  • Nakib - 你可以试试parseInt(x)
  • 现在最好的方法是:var x = Math.trunc(455/10);

标签: javascript division integer-division


【解决方案1】:
var answer = Math.floor(x)

我真诚地希望这将有助于未来的搜索者在谷歌上搜索这个常见问题。

【讨论】:

  • 谢谢我用谷歌搜索但找不到,还是谢谢:)
  • 具有讽刺意味的是,这是我在谷歌搜索如何解决这个问题的最佳答案。
  • 我发现这个答案甚至一直都不正确。如果结果为负数,Math.floor() 返回错误结果。所以即使是谷歌也会返回一个不正确的答案。这里:stackoverflow.com/questions/4228356/…
  • Math.floor() 的用法仅适用于给定数字为正数的情况。 look at this for more explaination。通常parseInt() 是获取数字或字符串的整数部分的更好选择。
  • Math.trunc() 解决负值问题。实际上,如果您只想删除小数部分,则需要 trunc 。 stackoverflow.com/a/22307150/5876282
【解决方案2】:
var x = parseInt(455/10);

parseInt() 函数解析一个字符串并返回一个整数。

radix 参数用于指定要使用的数字系统 例如,使用基数 16(十六进制)表示 字符串中的数字应从十六进制数解析为 十进制数。

如果 radix 参数被省略,JavaScript 假设如下:

If the string begins with "0x", the radix is 16 (hexadecimal)
If the string begins with "0", the radix is 8 (octal). This feature is deprecated
If the string begins with any other value, the radix is 10 (decimal)

【讨论】:

  • 这是低效的,因为它有一个隐式的number.toString() 调用,然后是一个parse,与Math.floor 相比,它相对昂贵。不保证 parseInt 将接受 number 参数。
  • 但是这模拟了python3的行为:math.inf // 7 == nan => parseInt(Infinity / 7) == NaN
猜你喜欢
  • 2011-11-18
  • 2014-01-10
  • 1970-01-01
  • 2013-10-10
  • 2011-05-12
  • 2021-12-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多