Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Калькулятор. Ошибки в расчетах. (https://javascript.ru/forum/misc/30037-kalkulyator-oshibki-v-raschetakh.html)

nanoT1m 21.07.2012 23:57

Калькулятор. Ошибки в расчетах.
 
<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. С чем это связанно?

Aetae 22.07.2012 00:04

http://javascript.ru/forum/misc/9459...prosy-faq.html п.8
Читайте faq прежде чем задать вопрос.

lord2kim 22.07.2012 00:22

nanoT1m, смотрите каждое из чисел и в toFixed() подставляйте max количество знаков после "запятой"
и такого элемента не существует
Цитата:

Сообщение от nanoT1m (Сообщение 190640)
<input type="label" id="labelField" />


nanoT1m 22.07.2012 23:52

Спасибо :) почитал учебник много интересного узнал по этой проблеме.
lord2kim, написал что первое в голову пришло (: странно, но этот label все же работает.

Aetae 23.07.2012 02:42

Неизвестные типы input type трактуются как text:
<input>


Часовой пояс GMT +3, время: 23:25.