好的,这是我的源代码。
var newRealID = <? print($_SESSION["mySteamID"]) ?>;
alert("MY ID = " + <? print($_SESSION["mySteamID"]) ?>);
当我检查网站或查看源代码时,我得到以下代码
var newRealID = 76561198061310076;
alert(76561198061310076);
哪个是正确的输出,但是,我在我的chrome中可视化的警告框是:
MY ID = 76561198061310080
我完全不知道,我已经被困在这里多年了..
答案 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);