PDA

Просмотр полной версии : Number() - как Фууууункция


УильямБрэдберри
14.03.2003, 17:41
сунулся тут сегодня примерчик накидать

примерчик должен был превратить строку вида "123" в шестизначную строку "000123"

ну все просто, состряпал цикл, который проверяет длину строки и прибавляет нули к началу...

все просто, да как оказалось не так все гладко.

используем простую функцию

Number("017");

в результате, по идее нам должно вернуться число "17";

ан нет...

вернется нам "15";
из 010 мы получим 8
из 0011 получим 9 и так далее до 18
а вот из 00018 мы получим 18

в завершение такой хитрый примерчик
чему по идее равно
Number("2000") ?

правильный ответ 2000

а вот чему в таком случае равно Number("002000"); ?

хе хе хе...

ЗЫ: кстати лечится это просто...
но вот репа чешется

llllllllll
14.03.2003, 17:50
trace(Number("0x8")); // Hex
trace(Number("010")); // Oct
trace(Number("8")); // Dec

- по твоему что то не так?

Дениска
14.03.2003, 17:55
Integers beginning with 0 or specifying a radix of 8 are interpreted as octal numbers. Strings beginning with 0x are interpreted as hexadecimal numbers. White space preceding valid integers is ignored, as are trailing nonnumeric characters.

lexass
14.03.2003, 17:58
пора назад в 5-ку ;) :D

УильямБрэдберри
14.03.2003, 18:26
о как все просто оказалось =)

Nox Noctis
14.03.2003, 18:29
gotcha ! :)))

зы: кстати, зачем цикл тебе там понадобился ? :) не понимаю....

TTS
14.03.2003, 18:36
Наверно, просто прикалывается.
Щас я тоже приколюсь.

УильямБрэдберри
14.03.2003, 19:48
Оригинал написал(а) Nox Noctis
gotcha ! :)))

зы: кстати, зачем цикл тебе там понадобился ? :) не понимаю....

а проще всего так было =)

потом укоротил немного

_string = "012345";
F_inc = function (a, b) {
result = parseInt(a, 10)+b;
a = a.substring(0, a.length-String(result).length)+result;
return a;
};

var x = 1;
trace(F_inc(_string,x));

Nox Noctis
15.03.2003, 18:04
эмм... может я не понял что нужно было сделать ? :) просто добавить leading zeros ?
тогда _string должна быть равна "000000" :))
либо ты опечатался, либо я не понял о чем речь, либо одно из двух...

Useless
15.03.2003, 18:23
Инкремент строки с лидинг зирос. Только что-то есть у меня сомнения, что она правильно работает...

Useless
15.03.2003, 18:28
Проверил. Беру свои слова назад.

УильямБрэдберри
16.03.2003, 23:19
Оригинал написал(а) Nox Noctis
эмм... может я не понял что нужно было сделать ? ...
либо ты опечатался, либо я не понял о чем речь, либо одно из двух...

... да, наверное.

просто привык унифицировать...

там не обязательно 6 знаков...
может и 5 и 10 быть, мало ли кому ка нраицца... :)