私に教えてください。どうすればjsonから番号を取得できますか?番号の末尾にゼロが表示されるのはなぜですか?Json max int nubmer
var a = '{ "n": 870744036720833075 }';
var json = JSON.parse(a);
document.getElementById('test').innerHTML = json.n; // 870744036720833000 why?
どうすればこの問題を解決できますか?
私に教えてください。どうすればjsonから番号を取得できますか?番号の末尾にゼロが表示されるのはなぜですか?Json max int nubmer
var a = '{ "n": 870744036720833075 }';
var json = JSON.parse(a);
document.getElementById('test').innerHTML = json.n; // 870744036720833000 why?
どうすればこの問題を解決できますか?
この整数は、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答えが良いスタートになるかもしれません。
ありがとう、私は理解していますが、divの数でどのように取得できますか? –
私はアップデートを追加しましたが、基本的にはそれを文字列として扱わなければなりません。 – Kolichikov
この数値は、文字列または縮約表記のいずれかで表現する必要があります。数値が「Number.MAX_SAFE_INTEGER」定数(9007199254740991)を超えているためです。 –
これをチェックしてください。https://stackoverflow.com/questions/1379934/large-numbers -new-round-in-javascript –