Цифры с префиксом 0 считаются переданными в восьмеричной системе (судя по справке). Можно, как написала Ольга, вторым параметром передавать базу системы счисления (10). Тогда все корректно работает.
Евгений, функция работает корректно, Вы просто не учли следующего:
parseInt(numString, [radix])
numString
Required. A string to convert into a number.
radix
Optional. A value between 2 and 36 indicating the base of the number contained in numString. If not supplied, strings with a prefix of '0x' are considered hexadecimal and strings with a prefix of '0' are considered octal. All other strings are considered decimal. (http://msdn.microsoft.com/en-us/library/x53yedee%28VS.85%29.aspx)
В Вашем случае необходимо передавать основание, чтобы получить корректное значение.
Во многих случаях достаточно поделить любую строку на 1. Если строка принципиально преобразуема в число, тип изменится на числовой. Иначе будет NaN
var a = '0076547.6787678';//тип - строка
a = a / 1; //преобразовали тип
debugger;//Можно убедиться, тип у переменной "a" стал double,
//лишние нули исчезли.
"Будак Анатолий Васильевич" написал:Во многих случаях достаточно поделить любую строку на 1. Если строка принципиально преобразуема в число, тип изменится на числовой.