我一直在冥思苦想,我有限的真正的編程知識,需要一些幫助......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