Вы можете попытаться использовать свойство node attributes
, чтобы поддерживать совместимость со старыми браузерами даже в IE6:
function getClassNode(element) {
for (var i = element.attributes.length; i--;)
if (element.attributes[i].nodeName === 'class')
return element.attributes[i];
}
function removeClass(classNode, className) {
var index, classList = classNode.value.split(' ');
if ((index = classList.indexOf(className)) > -1) {
classList.splice(index, 1);
classNode.value = classList.join(' ');
}
}
function hasClass(classNode, className) {
return classNode.value.indexOf(className) > -1;
}
function addClass(classNode, className) {
if (!hasClass(classNode, className))
classNode.value += ' ' + className;
}
document.getElementById('message').addEventListener('click', function() {
var classNode = getClassNode(this);
var className = hasClass(classNode, 'red') && 'blue' || 'red';
removeClass(classNode, 'red');
removeClass(classNode, 'blue');
addClass(classNode, className);
})
.red {
color: red;
}
.red:before {
content: 'I am red! ';
}
.red:after {
content: ' again';
}
.blue {
color: blue;
}
.blue:before {
content: 'I am blue! '
}
<span id="message" class="">Click me</span>
По некоторым причинам существует две стандартных библиотеки в PHP обработка произвольной длины / числа точности: до н.э Математика и GMP. Я лично предпочитаю GMP, поскольку это более ново и имеет более богатый API.
На основе GMP я реализовал класс Decimal2 для того, чтобы сохранить и обработать суммы валюты (как 100,25 доллара США). Много из ультрасовременных вычислений там w/o любые проблемы. Протестированный с очень большие количества.
<?php
function add($int1,$int2){
$int1 = str_pad($int1, strlen($int2), '0', STR_PAD_LEFT);
$int2 = str_pad($int2, strlen($int1), '0', STR_PAD_LEFT);
$carry = 0;
$str = "";
for($i=strlen($int1);$i>0;$i--){
$var = $int1[$i-1] + $int2[$i-1] + $carry;
$var = str_pad($var, 2, '0', STR_PAD_LEFT);
$var = (string) $var;
$carry = $var[0];
$str = $str . $var[1];
}
$res = strrev($str.$carry);
echo ltrim($res,"0");
}
add($int1,$int2);
?>
Вы смотрели на телефон bcmod()
? php имеет проблемы с целыми числами по 2^31 - 1 на платформах на 32 бита.
var_dump(bcmod("$x", '104659') ); // string(4) "2968"
Я предлагаю, чтобы Вы попробовали BigInteger. Если это не удается, можно использовать БОЛЬШОЙ ГЛОТОК , чтобы добавить код C/C++ для больших целочисленных вычислений и связать его в код.