2017-11-08 3 views
2

私に教えてください。どうすればjsonから番号を取得できますか?番号の末尾にゼロが表示されるのはなぜですか?Json max int nubmer

var a = '{ "n": 870744036720833075 }'; 
var json = JSON.parse(a); 

document.getElementById('test').innerHTML = json.n; // 870744036720833000 why? 

どうすればこの問題を解決できますか?

+0

この数値は、文字列または縮約表記のいずれかで表現する必要があります。数値が「Number.MAX_SAFE_INTEGER」定数(9007199254740991)を超えているためです。 –

+0

これをチェックしてください。https://stackoverflow.com/questions/1379934/large-numbers -new-round-in-javascript –

答えて

2

この整数は、Javascriptが安全な整数とみなす値を超えています。 Number.isSafeInteger(870744036720833075)を実行してこれをテストすると、falseが返されます。 このため、数値は使用可能な最大精度に格納されます。

max safe整数の説明については、hereを参照してください。これの副作用はドキュメントで気付くことができます。

この文脈では、整数は の整数を正確に表現し、正確に比較する能力を指します。たとえば、 Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2は となりますが、これは数学的に正しくありません。詳細については、 Number.isSafeInteger()を参照してください。

これは、Javascriptの観点からは、作成している番号と、それが与える数字が同じものと比較されることを意味します。

UPDATE

番号を保存するために、あなたはそれを文字列として扱う必要があります。 、あなたがそれらに数学演算を実行する必要がある場合は、あなたのJSONがvar a = '{ "n": "870744036720833075" }';

になるように変更しますが、文字列エンコードされた数字では、数学的な演算を実行するいくつかのJavaScriptライブラリなどstrint、またはコメントで提案されているものを見つけることができます。

UPDATE

あなたは外部APIからこれを取得している場合は、JSONを自分で解析する必要があります。 This答えが良いスタートになるかもしれません。

+0

ありがとう、私は理解していますが、divの数でどのように取得できますか? –

+1

私はアップデートを追加しましたが、基本的にはそれを文字列として扱わなければなりません。 – Kolichikov