Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2016, 02:58
Аспирант
Отправить личное сообщение для Feex Посмотреть профиль Найти все сообщения от Feex
 
Регистрация: 30.12.2015
Сообщений: 82

Проблема с калькулятором
Есть простейший калькулятор, всего одно действие: сложение.
Условия подсчета следующие:
Первое число неизменное(фиксированное): 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>
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2016, 10:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,304

Feex,
искать плагин для работы с большими числами
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2016, 14:12
Аспирант
Отправить личное сообщение для Feex Посмотреть профиль Найти все сообщения от Feex
 
Регистрация: 30.12.2015
Сообщений: 82

Пока поиски ни к чему не привели.... Но заметил, что оказывается почти все калькуляторы, в которые можно загнать числа типа 79064188910487732224, не умеют их считать!!! Я даже не думал, что кругом столько калькуляторов, которые не работают по сути!!!
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2016, 15:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 27,304

Feex,
Длинная арифметика
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2016, 16:13
Аспирант
Отправить личное сообщение для Feex Посмотреть профиль Найти все сообщения от Feex
 
Регистрация: 30.12.2015
Сообщений: 82

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


работает))
только как это всё "инпуты" перевести... делема..
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2016, 21:29
Аспирант
Отправить личное сообщение для Feex Посмотреть профиль Найти все сообщения от Feex
 
Регистрация: 30.12.2015
Сообщений: 82

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

<!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>
Ответить с цитированием
  #7 (permalink)  
Старый 28.08.2016, 22:30
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,214

Feex, sub
Ответить с цитированием
  #8 (permalink)  
Старый 28.08.2016, 22:57
Аспирант
Отправить личное сообщение для Feex Посмотреть профиль Найти все сообщения от Feex
 
Регистрация: 30.12.2015
Сообщений: 82

Сообщение от Rise Посмотреть сообщение
Feex, sub
Спасибо! Получилось)
А еще можно сделать, чтобы результат выводился не в инпуте, а в <span> - как в первом варианте?
Ответить с цитированием
  #9 (permalink)  
Старый 28.08.2016, 23:36
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,214

Feex, попробуй
Ответить с цитированием
  #10 (permalink)  
Старый 29.08.2016, 00:02
Аспирант
Отправить личное сообщение для Feex Посмотреть профиль Найти все сообщения от Feex
 
Регистрация: 30.12.2015
Сообщений: 82

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

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

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

Последний раз редактировалось Feex, 29.08.2016 в 02:20.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с калькулятором PowerRudy Общие вопросы Javascript 2 05.04.2015 20:44
Проблема с калькулятором webmaker Общие вопросы Javascript 4 14.01.2014 23:08
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47