<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. С чем это связанно?