2

以下がアイテムの正しい値を返すのではなく、3 番目のアイテムの値 + 1 を返す理由を知っている人はいますか?

JSFiddle: http://jsfiddle.net/gz4gA/

var items = [10150778347353933, 95698693940, 10151139500303463, 337394396325739, 181838311261, 186661577450, 131239636262, 408877845803303, 130260147046659, 10151850964430652, 190553376302, 256062744215, 73099117435, 30571361895, 85358203371, 133621058800, 67899501771, 422515109312, 56271008850, 107997326726, 382312857465, 144163385597840, 10150882307310061, 184244804960462, 63953746442, 114588455254586, 201992215550, 401799715673, 287217811299764, 96668113887, 106824841365, 130084127023410, 186061480932, 60351005403, 209693813195, 10150593297330601, 319622191193, 68686268942, 290590784383, 63467856465, 470235003273, 127564720953, 127437064077, 102351319089, 113530295368, 82102942060, 290699835908, 81445359355, 137490940846, 119104781632, 415115129332, 120520318032430, 142666108227, 146711457500, 344723925588563, 239108779476988, 121853939741, 109322101963, 54456613147, 473850413696, 10150329755772674];
console.log(items[2]);

</p>

4

2 に答える 2

4

JavaScript の数値は 64 ビットの浮動小数点値です。正確に表すことができる最大の整数値は 2 53、つまり 9007199254740992 です。それよりも大きい数値 (配列の 3番目の要素を含む) は、おおよそでしか表されません。たとえば、ECMA 262-5、セクション 8.5を参照してください。

于 2012-10-30T05:10:24.183 に答える
2

この回答https://stackoverflow.com/a/307200/816620によると、javascript がすべての整数を表すことができる範囲の上限は次のとおり9007199254740992です10151139500303463。だから、あなたの数は大きすぎます。

これらが実際に数値として使用する必要があるものではなく、アイテム コードのようなものである場合は、数値ではなく文字列として格納する必要があります。

于 2012-10-30T05:10:55.907 に答える