我一直在冥思苦想,我有限的真正的编程知识,需要一些帮助......node.js中节省大量的浮点数到蒙戈搜索
从node.js的范围内,并保存到MongoDB的(使用native driver)我需要索引和搜索一些长数字。
一个例子:
87/53
在64位Windows计算器是这样的:
1.6415094339622641509433962264151
我在node.js中运行以下命令:
var answer = 87/53;
console.log(answer);
,我也得到:
1.6415094339622642
我的理解是因为node.js只运行32位,我们没有得到所需的精度。
所以,我在node-bigint库,包装libgmp使用字符串做大数目的数学插...
现在是:
var bigint = require('bigint');
var top = bigint('8700000000000000000000000000000000000');
var bottom = bigint(53);
var answer = top.div(bottom);
console.log(answer.toString());
我已经用零去除浮补齐点(更容易 - 我只需要比较的数字比小于大即)...
此代码产生了:
'164150943396226415094339622641509433'
大 - 我得到了比Windows计算器更准确:)
问题是,这个数字是目前一个字符串 - 我节省了字符串蒙戈和做一个查询,如:
{thenumber:{'$gt':'164150943396226415094339622641509433'}}
Ie我正在比较字符串和字符串。这工作正常,因为我填充他们都一样。
的问题是 - 这是存储和搜索值或将它们转换为64位长的最好的方式(即字符串)更快的索引和搜索......
如果答案是“使用多头他们更快'我不能为我的生活(大量谷歌搜索后)找出如何将上面的字符串转换为本地Mongo Long数据类型(低位和高位) - 请帮助他的深度程序员:)
追问:
阅读Long DataType手册司机我T有这个方法:
Long.fromBits(lowBits, highBits)
所以有针对性的问题 - 如何把一个代表64位整数到这些低和高比特龙救...也是一个字符串 - 这是更快地搜索比一个字符串?
这听起来像你在为我做“真正的编程”:) – benekastah 2012-08-15 17:26:09