在javascript中,我想用以下方法创建一个大型布尔数组(54个元素)的二进制哈希:
function bhash(arr) {
for (var i = 0, L = arr.length, sum = 0; i < L; sum += Math.pow(2,i)*arr[i++]);
return sum;
}
Run Code Online (Sandbox Code Playgroud)
简而言之:它创建了一个最小的整数来存储一个布尔数组.现在我的问题是javascript显然使用浮点数作为默认值.我必须创建的最大数量是2 ^ 54-1但是一旦javascript达到2 ^ 53,它就会开始做奇怪的事情:
9007199254740992+1 = 9007199254740994
Run Code Online (Sandbox Code Playgroud)
有没有办法在javascript中使用整数而不是浮点数?还是大整数求和?
我一直在尝试使用 javascript 添加以下数字;
76561197960265728+912447736
遗憾的是,由于 JavaScript 中的四舍五入,它不会得到正确的数字,我需要该数字作为字符串。
我尝试使用 substr 删除最后几位数字,然后将两个数字相加,然后将两个字符串放在一起,遗憾的是,如果第一个数字是 1,则这不起作用。
function steamid(tradelink){
var numbers = parseInt(tradelink.split('?partner=')[1].split('&')[0]),
base = '76561197960265728';
var number = parseInt(base.substr(-(numbers.toString().length + 1))) + numbers;
steamid = //put back together
}
steamid('https://steamcommunity.com/tradeoffer/new/?partner=912447736&token=qJD0Oui2');
Run Code Online (Sandbox Code Playgroud)
预期的:
76561198872713464