-3

Есть переменная n которая содержит число n = 084746473827;

Когда я использую функцию tostring(), то возвращается уже 84746473827 (то есть уже без 0).

Почему так происходит?

И как можно число приводить к строке без его изменения (например, число у нас 084746473827, а нужно чтоб вернулась строка 084746473827) ?

xaja
  • 2,969
  • 4
    потому что число на самом деле 84746473827 С чего вы взяли что у него стоит 0? – Grundy Dec 04 '15 at 10:36
  • То есть нельзя сделать чтоб возвращалось с ноликом как на входе? – Dementiy1999 Dec 04 '15 at 10:38
  • 1
    да, только руками. При этом вы должны знать какая должна быть конечная длина. Откуда вы берете число с 0? – Grundy Dec 04 '15 at 10:39
  • вообще мне приходит переменная в которой 084746473827 - число. (проверял typeof); но ответ ниже решил проблему . Всем спасибо за разъяснение – Dementiy1999 Dec 04 '15 at 10:49
  • 2
    в переменной не может быть 084746473827 потому что, как вы сказали это число, и оно автоматически отбрасывает лидирующие нули – Grundy Dec 04 '15 at 10:56
  • https://ru.stackoverflow.com/a/453060/178988 – Qwertiy Aug 17 '17 at 17:24

2 Answers2

1

У чисел не учитываются ведущие нули. Если вам нужно заполнить нулями до определенной ширины, можно сделать так:

var num, str;
num = 84746473827;
str = (new Array(12).join('0') + num).slice(-12);
console.log(str);
tutankhamun
  • 11,366
1

Всё неправильно :). Ноль в начале "литерал" целого означает, что число записано в восьмеричной системе. Вам повезло, что в числе встречаются цифры больше семи.

// 017 is treated as octal
var a = 017;
console.log("a - decimal toString", a.toString());
console.log("a - octal toString", a.toString(8));

// 018 is treated as decimal var b = 018; console.log("b - decimal toString", b.toString());