为什么我在某个地方得到了错误的id?

时间:2017-04-06 11:41:40

标签: javascript php jquery html

好的,这是我的源代码。

var newRealID = <? print($_SESSION["mySteamID"]) ?>;
alert("MY ID = " + <? print($_SESSION["mySteamID"]) ?>);

当我检查网站或查看源代码时,我得到以下代码

var newRealID = 76561198061310076; alert(76561198061310076);

哪个是正确的输出,但是,我在我的chrome中可视化的警告框是:

MY ID = 76561198061310080

我完全不知道,我已经被困在这里多年了..

2 个答案:

答案 0 :(得分:4)

问题是因为您使用的值超出了JS允许的MAX_SAFE_INTEGER

console.log(76561198061310076);
console.log(Number.MAX_SAFE_INTEGER)

由于这个原因,您的号码被强制转换为浮点并再次返回。这又会引入舍入误差,这会导致您在结果中看到的差异。

假设您不需要对值使用数学运算,您可以将其转换为输出中的字符串:

var newRealID = '<? print($_SESSION["mySteamID"]) ?>';

答案 1 :(得分:1)

Javascript无法处理那么大的数字,因此您可以将其作为字符串传递,而不是像

那样
var newRealID = '<? print($_SESSION["mySteamID"]) ?>';
alert("MY ID = " + newRealID);