JavaScript对于整数和浮点数没有不同的类型。使用“整数”时,这是否意味着我需要担心舍入错误?
例如,如果我想知道数字x
何时可被3整除,是否可以写
x % 3 == 0
还是我需要进行浮点式比较,例如:
x % 3 <= 0.5
任何见解都将受到赞赏。
(如果我确实需要在那里做不等式,那么检查一个函数的传递参数是否等于1;我可以写x === 1
吗?)
答案 0 :(得分:4)
如果您正在使用整数,通常是安全的。但是,一些浮点运算可能会非常奇怪。如果在使用模数之前对数字执行浮点运算,即使逻辑结果始终为整数,也应使用:
Math.floor(x) % 3 === 0
但如果它总是一个整数,就像这样:
var x = 52;
if(x % 3 === 0) { // safe
}
然后那很好。关于您的第二个问题,===
身份运算符在数字之间也可以安全使用。例如:
function x(y) {
return y === 7;
}
alert(x(7.0)); // true
正常工作。
答案 1 :(得分:1)
如果x是整数,则可以先写入模数。
只有当你想要失败时才需要和'===',例如,字符串“1”或布尔值为true,但传递整数1;否则'=='就足够了。
答案 2 :(得分:0)
JavaScript不会为int和float提供不同的类型,但确实有它们的概念。内置函数parseInt
可用于强制数字(或任何其他类似数字的值,包括字符串“32.06”!)为整数。它会截断而不是舍入浮点值。