如何在javascript中进行整数除法(在int中获取除法答案而不是float)? [复制]

Posted

技术标签:

【中文标题】如何在javascript中进行整数除法(在int中获取除法答案而不是float)? [复制]【英文标题】:How to do integer division in javascript (Getting division answer in int not float)? [duplicate] 【发布时间】: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); 【参考方案1】:
var answer = Math.floor(x)

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

【讨论】:

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

以上是关于如何在javascript中进行整数除法(在int中获取除法答案而不是float)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 ilnumerics 进行整数除法

无论结果如何,支持除以零的最快整数除法是啥?

如何解决使用 Z3 产生整数结果的整数除法?

整数除法('Int' 不能转换为 'Double')

python中整数除法和float到int转换之间存在差异的原因是啥?

具有浮点运算的一致整数除法