2017-09-26 6 views
0

私はBigInt(20)データ型をmysqlデータベースの自動インクリメントIDに使用しています。 整数値が大きすぎる場合、javascriptの数値精度の後にこれをどのように扱うことができますか。これは、任意の数値を挿入して読み取ることを許可しません。だから私はこれをどのように達成することができます。大きな整数のライブラリに関する 読むが、私は期待した結果ノードjで非常に大きな数値を扱うにはどうすればよいですか?

例ではないでしょう: -

私はその指数値と任意のゴミ値を使用せずに同じ番号を印刷するにはどうすればよい
var x = 999999999999999999999999999999999999999; 

私は例2その

var BigNumber = require('big-number'); 

var x = new BigNumber(999999999999999999999999999999999999999, 10); 
console.log(x); 

のように試してみました: -

私は最後に挿入IDを取得した場合、どのように私は、この値

connection_db.query('INSERT INTO tableName SET ?', tableData, 
    function (error1, results1, fields1) { 
    error1){ 
     // Db error 
     }else{ 
     var lastInserted = new BigNumber(results1.insertId); 
     console.log(lastInserted);// still wrong value 
      } 

    }); 
+1

BIGINT(20)は20桁の整数を生成しないと考えてください。(20)はmysqlのzerofull関数にのみ適用されます... BIGINTの最小値と最大値はhttps://dev.mysqlです。 com/doc/refman/5.5/en/integer-types.html .. –

+2

@robertklepは良い答えを提供します。別の考えを加えたい。あなたの具体的な環境に応じて、JavaScriptは最大2^53-1の "安全な整数"を提供します。MySQLのBIGINTは、(あなたのインストールに応じて)64ビット値です。したがって、2^53 - 1(= 9007199254740991)であれば十分ですが、とにかくこの組み合わせを使用することができます(もちろん、あなたの範囲を守ります)。 – iquellis

答えて

3

を扱うことができますあなたが唯一の/ショーを渡すことができますそのような大きな数字は文字列

var BigNumber = require('big-number'); 

var x = new BigNumber('999999999999999999999999999999999999999', 10); 
console.log(x.toString()) 

しかし、最後には、Number.MAX_SAFE_INTEGERを考慮する必要があるので、このような大きな数を処理するのはMySQLドライバの責任です。

たとえば、mysqlモジュールには、BIGINTの処理に関連するさまざまなオプション(supportBigNumbersおよびbigNumberStrings)があります。

+1

アプリケーションが14桁または15桁以上の整数値を必要とする場合は、アプリケーションをJavaScriptでプログラミングしようとすると**の苦痛**を感じるでしょう。できるなら、それを避けてください。 –

+0

@robertklepどうすればこのようにbecozeを実行することができますか?非常に大きな番号でデータを送信していますが、これをsttringとして渡すにはどうすればいいですか? –

+0

@VIKASKOHLI私の編集を参照してください。おそらくMySQLドライバで 'BIGINT'サポートを有効にする必要があります。 – robertklep

関連する問題