Google Script преобразует числа не так, как JavaScript - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь преобразовать строку в int.Когда строка представляет собой число с начальным нулем, кажется, что Google Script попадает в беду.Преобразование «07» в 7 работает нормально, преобразование «08» заканчивается в NaN.

function test_parse_int() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // parses to 7
  ss.toast( parseInt("07") );
  // parses to NaN ?!?
  ss.toast( parseInt("08") );
}

Я проверил это на JavaScript и там все работает нормально.

<script>
// parses to 7
document.writeln(parseInt("07"));
// parses to 8
document.writeln(parseInt("08"));
</script>

Это поведение не имеет никакого смысла для меня, это ошибка?Я что-то упустил?

1 Ответ

0 голосов
/ 04 июня 2018

Источник: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt [Кредиты для комментария @teemu]

Если входная строка начинается с "0", основание будет восемь (восьмеричное) или 10 (десятичное).Какое именно основание выбрано, зависит от реализации.ECMAScript 5 указывает, что используется 10 (десятичное число), но пока не все браузеры поддерживают это.По этой причине всегда указывайте основание при использовании parseInt.

Поэтому подробно упомяните radix

Примерно так:

function test_parse_int() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // parses to 7
  ss.toast( parseInt("07", 10) );
  // parses to NaN ?!?
  ss.toast( parseInt("08", 10) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...