Функция JavaScript parseInt () неправильно анализирует числа с ведущими 0 - PullRequest
5 голосов
/ 19 декабря 2010

У меня есть несколько нулей до положительного целого числа. Я хочу удалить нули, чтобы осталось только положительное целое число. Как «001» будет только «1». Я думал, что самый простой способ - использовать parseInt ('001'). Но я обнаружил, что это не работает для чисел 8 и 9. Пример parseInt ('008') приведет к «0» вместо «8».

Вот весь HTML-код:

<html> <body>
<script>
var integer = parseInt('002');
document.write(integer);

</script>
</body> </html>

Но могу ли я как-то сообщить об этой проблеме? Кто-нибудь знает другой простой способ обойти эту проблему?

Ответы [ 4 ]

15 голосов
/ 19 декабря 2010

Вы должны указать основание числа (основание)

parseInt('01', 10);
10 голосов
/ 19 декабря 2010

Это задокументированное поведение: http://www.w3schools.com/jsref/jsref_parseInt.asp

Строки с начальным '0' анализируются, как если бы они были восьмеричными.

3 голосов
/ 19 декабря 2010

Число с нулевым префиксом анализируется как восьмеричное.

1 голос
/ 19 декабря 2010

На самом деле это не ошибка. По традиционным причинам строки, начинающиеся с 0, интерпретируются в восьмеричном виде, а в восьмеричном - нет цифры 8. Чтобы обойти это, вы должны явно передать основание (т.е. parseInt("008", 10)).

...