Странная арифметика Джава Скрипта. Что не так?

Семён Колобаев

Вот есть такой код у меня на страничке:
<meta charset="utf-8">
<script>
var chislo = +prompt();
var detektor = 0;
var pdel = 1000;
var vtper = 0;
var schper = 1;
while (pdel>=1) {
chislo = chislo / pdel;
vtper = chislo.toFixed();
if ((vtper!=0)&&(detektor==0)) {
detektor = 1;
}
if (detektor==1) {
alert(schper + " цифра = " + vtper);
schper = schper + 1;
}
chislo = (chislo - vtper) * pdel;
pdel = pdel / 10;
}
</script>

    Это, признаю, не самый оптимальный, но, по-идее, рабочий алгоритм для разбивки числа на цифры и вывод каждой цифры по-отдельности для чисел до 9999. Однако что-то не так. Даю скриншоты отладки.

    Вот начнём с того, что введём число ... ну пусть 345.
    http://s020.radikal.ru/i706/1702/2e/84c89893117f.png

    Первой прогон цикла отсекает 0 в условном числе 0345, всё идёт штатно. Тут показывать нечего. Переменная pdel становится равной 100.

    Второй прогон цикла. chislo=3,45: vtper=3.
    http://s020.radikal.ru/i709/1702/4b/4cd055813cfbt.jpg
    http://s009.radikal.ru/i309/1702/8a/b74be99adde7t.jpg

    И тут начинаются чудеса арифметики. chislo=45,(куча нулей)14. 
    http://s013.radikal.ru/i322/1702/11/3f641a1fe3a4t.jpg
    Ещё раз, нам надо из chislo (3,45) вычесть vtper (3) и умножить на 100. Считаем: (3,45-3)*100=0,45*100=45. Дальше я даже не буду приводить дальнейшие нарастающие, как лавина, сумасшедшие исчисления программы, она с этого момента не может ни одно арифметическое действие без ошибки сделать.

    Что не так?
1 чел.