Показать сообщение отдельно
Старый 21.03.2007, 15:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Проблему можно решить иначе. Ведь пользователь вводит точку, а это все строка. Что мешает работать без точки, потом её привинтить?

Как-то так:

Код:
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);
Доработать напильником только надо.


Последний раз редактировалось etc; 21.03.2007 в 15:46.