Проблемы с переводом в разные системы исчисления
Доброго времени суток!
Мне приходиться с весьма крупными числами при переводе из одной системы в другую (из 10 в 32 и обратно). Перевод в 32 систему работает нормально, но в 10-ую систему переводит в число типа 1.04010101080108e+26. Как мне от этого избавиться? P.S. нашел сервис который работает с такими числами хорошо, но не могу найти часть кода что отвечает за перевод чисел (http://planetcalc.ru/375/) Вот моя функция для перевода в 10-ую систему исчисления (для перевода в какую либо другую нужно еще дописать). String.prototype.toSystem = function (to, from) { if (!to) return false; var n = '0123456789abcdefghijklmnopqrstuvwxyz'; var bool = new Array (true, false); from = from || 10; if (from > n.length || from < 0 || to > n.length || to < 0) return false; if(this.length > 0) { for (var i = 0; i < this.length && bool[0]; i++) { bool[1] = false; for (var k = 0; k < from && !bool[1]; k++) { if (this[i].toLowerCase() == n[k]) { bool[1] = true; } } if (!bool[1]) bool[0] = false; } if (bool[0]) { alert(n.find('/')); var result = 0; for (var i = 0; i < this.length; i++) { result += n.find(this[this.length-1-i].toLowerCase()) * Math.pow(from, i); } if (to != 10) { console.log(' >> Перевод из 10 системы в ' + to); } return result; } else { return 'Validation failed.'; } } else return false; } String.prototype.find = Array.prototype.find = function (v) { if ([].indexOf) { return this.indexOf(v); } else { for (var i = 0; i < this.length; i++) { if (this[i] === v) return i; } return -1; } } |
Часовой пояс GMT +3, время: 07:48. |