Какое самое большое значение BigInt в js согласно спецификации - PullRequest
0 голосов
/ 16 ноября 2018

Оказывается (немного подумав, что это более очевидно, но неважно), что BigInt , недавно введенный в javascript, имеет ограничение:

enter image description here

Мой вопрос был бы - есть ли константа, похожая на Number.MAX_SAFE_INTEGER, но для BigInt?

Этот фрагмент кода:

   let a = 2n, step = 1;
   try{while(true) {
      console.log(step); 
      a=a**2n; step++
   }} catch(e){ console.log(e)}

Показывает, что ограничение составляет около (шаг = 32) - по крайней мере, в Chrome.Но мне интересно, каково это значение согласно спецификации.

1 Ответ

0 голосов
/ 16 ноября 2018

Кажется, что не существует максимального ограничения для BigInt согласно spec , что имеет смысл, учитывая, что BigInts должны быть целыми числами произвольной точности , чьи "цифры точности ограничено только доступной памятью хост-системы ".

Что касается конкретно v8, то, согласно этой статье в блоге v8 , точность BigInts «произвольна до предела, определенного реализацией». К сожалению, я не смог найти дополнительную информацию о том, как определяется предел. Может быть, кто-то еще сможет пролить свет на это на основе этих v8 замечаний по реализации BigInt ?

При этом, исходя из вышеупомянутых статей, похоже, что для BigInt не существует определенного максимального значения / размера. Скорее, он определенным образом определяется исходя из доступной памяти в системе.

...