Показать сообщение отдельно
  #1 (permalink)  
Старый 21.07.2012, 23:57
Интересующийся
Отправить личное сообщение для nanoT1m Посмотреть профиль Найти все сообщения от nanoT1m
 
Регистрация: 21.07.2012
Сообщений: 25

Калькулятор. Ошибки в расчетах.
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
	
	<input type="label" id="labelField" />
	<input type="button" onclick="solve()" value="=">
	<br />
	
	<input type="button" onclick="getValue(1)" value="1">
	<input type="button" onclick="getValue(2)" value="2">
	<input type="button" onclick="getValue(3)" value="3">
	<input type="button" onclick="clearExpr()" value="c">
	<br />
	
	<input type="button" onclick="getValue(4)" value="4">
	<input type="button" onclick="getValue(5)" value="5">
	<input type="button" onclick="getValue(6)" value="6">
	<input type="button" onclick="getValue('*')" value="*">
	<br />
	
	<input type="button" onclick="getValue(7)" value="7">
	<input type="button" onclick="getValue(8)" value="8">
	<input type="button" onclick="getValue(9)" value="9">
	<input type="button" onclick="getValue('/')" value="/">
	<br />
	
	<input type="button" onclick="getValue(0)" value="0">
	<input type="button" onclick="getValue('+')" value="+">
	<input type="button" onclick="getValue('-')" value="-">
	<input type="button" onclick="getValue('.')" value=".">

<script>
var val = '';

var expr = {
	val: '',
	err: false
	};

function getValue(val) {
   if (expr.err) {
   	document.getElementById('labelField').value ='';
   	expr.err = false;
   }
	val += this.val;
	document.getElementById('labelField').value += val;
	}
	
function clearExpr() {
	document.getElementById('labelField').value = '';
	}
	
function solve() {
	expr.val = document.getElementById('labelField').value;
	try {
		expr.val = eval(expr.val);
		if (!isFinite(expr.val)) throw new Error();
		document.getElementById('labelField').value = expr.val;
	}catch (e) {
		document.getElementById('labelField').value = 'Ошибка';	
		expr.val = '';
		expr.err = true;
	}
}

</script>
	</body>
</html>



Начал изучение JS с создания простенького калькулятора. Наткнулся на проблему: к примеру, если попробовать посчитать значение выражения 1-1.9 то получится результат -0,89999999999. С чем это связанно?
Ответить с цитированием