Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с калькулятором (https://javascript.ru/forum/misc/64659-problema-s-kalkulyatorom.html)

Feex 28.08.2016 01:58

Проблема с калькулятором
 
Есть простейший калькулятор, всего одно действие: сложение.
Условия подсчета следующие:
Первое число неизменное(фиксированное): 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>

рони 28.08.2016 09:42

Feex,
искать плагин для работы с большими числами

Feex 28.08.2016 13:12

Пока поиски ни к чему не привели.... Но заметил, что оказывается почти все калькуляторы, в которые можно загнать числа типа 79064188910487732224, не умеют их считать!!! :yes: Я даже не думал, что кругом столько калькуляторов, которые не работают по сути!!!

рони 28.08.2016 14:14

Feex,
http://javascript.ru/forum/misc/6401...rifmetika.html

Feex 28.08.2016 15:13

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) )


работает))
только как это всё "инпуты" перевести... делема..

Feex 28.08.2016 20:29

Нашел вариант с вычитанием. На сложение можно переделать?

<!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>

Rise 28.08.2016 21:30

Feex, sub

Feex 28.08.2016 21:57

Цитата:

Сообщение от Rise (Сообщение 426930)
Feex, sub

Спасибо! Получилось)
А еще можно сделать, чтобы результат выводился не в инпуте, а в <span> - как в первом варианте?

Rise 28.08.2016 22:36

Feex, попробуй

Feex 28.08.2016 23:02

сделал)))
теперь надо сделать, чтобы результат выводился не в виде текста, вернее не только ввиде текста, а еще и в виде ссылки.
сейчас выводится через <span id="result"></span> текст:
http://site.com/id79064188910487732224

а как сделать чтоб это еще и активная ссылка получилась - я пока не могу сообразить.. )) но подумаю..

P.S. Сделал) Всем спасибо за подсказки :о)


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