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