Проблема с калькулятором
Есть простейший калькулятор, всего одно действие: сложение.
Условия подсчета следующие: Первое число неизменное(фиксированное): 79064188910487732224 Второе число любое. Проблема в ошибке вычисления именно с большими числами. Например, если к нужному мне числу 79064188910487732224 прибавить 1, то должно получиться 79064188910487732225, а получается 79064188910487730000. С мелкими числами проблем нет, считает нормально. Подскажите, как исправить данную проблемку?
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Программа сложения двух чисел</title>
<script type="text/javascript">
function addition() {
var a = parseInt(document.getElementById('a').value);
var b = parseInt(document.getElementById('b').value);
if (isNaN(a)==true) a=0;
if (isNaN(b)==true) b=0;
var c = a + b;
document.getElementById('result').innerHTML = "http://site.com/id" + c;
}
</script>
</head>
<body>
<center>
<form>
<input id="a" type="text" value="79064188910487732224" onkeyup="this.value=this.value.replace(/[^0-9]/gi, '')"><br>
<input id="b" type="text" placeholder='Ваш ID (цифры)' onkeyup="this.value=this.value.replace(/[^0-9]/gi, '')"><br>
<input type="button" value=" Вычислить ID " onclick="addition();"><br>
</form><br>
<b><font style="color:#000;font-size:20px;font-family: Geneva, Arial, Helvetica, sans-serif;"><span id="result"></span></font></b>
</center>
</body>
</html>
|
Feex,
искать плагин для работы с большими числами |
Пока поиски ни к чему не привели.... Но заметил, что оказывается почти все калькуляторы, в которые можно загнать числа типа 79064188910487732224, не умеют их считать!!! :yes: Я даже не думал, что кругом столько калькуляторов, которые не работают по сути!!!
|
|
var max = "79064188910487732224" , min = "1";
function difference(max, min) {
max = max.split('')
.reverse();
max.push(0);
min = min.split('')
.reverse();
var len = max.length,
result = [];
for (var i = 0, b = 0, c = 0; i < len; i++) {
b = +max[i] + (+min[i] || 0) + c;
result[i] = b > 9 ? (c = (b/10|0), b % 10) : (c = 0, b)
}
return result.reverse()
.join('')
.replace(/^0+/, '');
}
alert(difference(max,min) )
работает)) только как это всё "инпуты" перевести... делема.. |
Нашел вариант с вычитанием. На сложение можно переделать?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex, nofollow">
<style type="text/css">
</style>
<title></title>
<script type='text/javascript'>
//<![CDATA[
window.onload=function(){
var first = document.getElementById("first");
var second = document.getElementById("second");
var result = document.getElementById("result");
var calcButton = document.getElementById("calc");
calcButton.onclick = calc;
function calc(){
var base = 10;
var op1 = str2bigInt(first.value, base);
var op2 = str2bigInt(second.value, base);
result.value = bigInt2str(sub(op1, op2), base);
}
}//]]>
</script>
</head>
<body>
<script src="http://www.leemon.com/crypto/BigInt.js"></script>
<input id="first" type="text"/>
<br/>
-
<br/>
<input id="second" type="text"/>
<br/>
=
<br/>
<input id="result" type="text" value="0" disabled/>
<br/>
<input id="calc" type="button" value="calc"/>
</body>
</html>
|
Цитата:
А еще можно сделать, чтобы результат выводился не в инпуте, а в <span> - как в первом варианте? |
сделал)))
теперь надо сделать, чтобы результат выводился не в виде текста, вернее не только ввиде текста, а еще и в виде ссылки. сейчас выводится через <span id="result"></span> текст: http://site.com/id79064188910487732224 а как сделать чтоб это еще и активная ссылка получилась - я пока не могу сообразить.. )) но подумаю.. P.S. Сделал) Всем спасибо за подсказки :о) |
| Часовой пояс GMT +3, время: 00:55. |