Проблему можно решить иначе. Ведь пользователь вводит точку, а это все строка. Что мешает работать без точки, потом её привинтить?
Как-то так:

Код:
a = '3.15';
b = '0.1';
dota = a.indexOf('.') != -1 ? (a.length-a.lastIndexOf('.')-1) : 0;
dotb = b.indexOf('.') != -1 ? (b.length-b.lastIndexOf('.')-1) : 0;
afterdot = 0;
while (dota<dotb) {
a += '0';
afterdot = dotb;
dota++;
}
while (dotb<dota) {
b += '0';
afterdot = dota;
dotb++;
}
afterdot = dota==dotb ? dota : afterdot;
while (a.charAt(0)=='0') {
a = a.substr(1);
}
while (b.charAt(0)=='0') {
b = b.substr(1);
}
na = Number(a.split('.').join(''));
nb = Number(b.split('.').join(''));
nc = na-nb;
c = String(nc);
if (dota != 0 || dotb != 0) {
if (c.length<=afterdot) {
while (c.length<afterdot) {
c = '0'+c;
}
c = '0.'+c;
} else {
c = c.substr(0, c.length-afterdot)+'.'+c.substr(-afterdot);
}
while (c.charAt(c.length-1)=='0') {
c = c.substr(0,c.length-2);
}
if (c.charAt(c.length-1)=='.') {
c = c.substr(0,c.length-2);
}
}
trace(c);
Доработать напильником только надо.