如何在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)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章