начал изучать экшн скрипт, добрался до создания калькулятора всё вроде-бы получилось только калькулятор проблемный вышел - точка десятичной дроби конфликтует с нулём

вот код:

Код:
var tablo = 0;
var num:Number = null;
var tochka:Boolean = true;
var numbers = 0;
var str:String = " " ;
var memory = null;
var operations = null;
but_ravno.enabled = false;
but_1.onPress = function():Void {
num=1;
myAdd();
}
but_2.onPress = function():Void {
num=2;
myAdd();
}
but_3.onPress = function():Void {
num=3;
myAdd();
}
but_4.onPress = function():Void {
num=4;
myAdd();
}
but_5.onPress = function():Void {
num=5;
myAdd();
}
but_6.onPress = function():Void {
num=6;
myAdd();
}
but_7.onPress = function():Void {
num=7;
myAdd();
}
but_8.onPress = function():Void {
num=8;
myAdd();
}
but_9.onPress = function():Void {
num=9;
myAdd();
}
but_0.onPress = function():Void {
num=0;
myAdd();
}
but_tochka.onPress = function():Void {
if (tochka) {
tochka = false;
str+= ".";
}
}
function myAdd():Void {
if (tochka) {
numbers = numbers*10+num;
}else{
numbers+=num/Math.pow(10,n);
n++;
}
if (str!= 0) {
str = str+num;
}else{
str = String(num);
}
if (str.length<17) {
tablo = str;
} else {
tablo = numbers;
}
}
but_znak.onPress = function ():Void {
if (str!= 0 && str!= "" ) {
numbers*=-1;
if (str.substring(0 , 1)!= "-" ) {
str = "-"+str;
}else{
str = str.substring(1);
}
if (str.length<17) {
tablo = str;
} else {
tablo = numbers;
}
}
}
but_clear.onPress = function():Void {
tablo=0, num=0, tochka=true, numbers=0, n=l, str="";
but_ravno.enabled=true, block2(true), block(true);
}
but_plus.onPress = function ():Void {
calc("plus");
}
but_minus.onPress = function ():Void {
calc("minus");
}
but_umn.onPress = function ():Void {
calc("umn");
}
but_del.onPress = function ():Void {
calc("dlm");
}
but_stepen.onPress = function ():Void {
calc("step");
}
function calc (operat:String):Void {
memory = numbers;
numbers = 0;
str = " " ;
operations = operat;
but_ravno.enabled = true;
block (false);
block2 (true);
}
but_ravno.onPress = function():Void {
var result:Number = null;
if (operations == "plus") {
result = memory + numbers;
}
if (operations == "minus") {
result = memory - numbers;
}
if (operations == "umn") {
result = memory * numbers;
}
if (operations == "dlm") {
result = memory / numbers;
}
if (operations == "stepen") {
result = Math.pow(memory, numbers);
}
numbers = result;
str = String(result);
tablo = result;
but_ravno.enabled = false;
block (true);
biock2 (false);
}
function block (par:Boolean):Void {
but_plus.enabled=par, but_umn.enabled=par, but_minus.enabled=par;
but_del.enabled=par;
}
function block2(par:Boolean):Void {
for (var i = 0; i<=9; i++) {
eval("but_"+i).enabled = par;
}
but_tochka.enabled = par;
}
думаю проблема скрывается в функции myAdd, подскажите как это исправить. Сам калькулятор во вложении. Ещё степень не выводтся но это не главное, помогите с дробными числами начинающимися с ноля.