В JavaScript, когда вы используете десятичные активы для выполнения операций с добавлением, вычитанием, умножением и делением, вы обнаружите, что полученный результат иногда сопровождается длинным десятичным децималом, что усложняет операцию и влияет на результаты расчета. Я искал в Интернете по причинам, которые примерно следующие: в JavaScript многие десятичные места всегда будут отображаться, когда операции данных с децималами. Это связано с тем, что в JavaScript числа с плавающими темпами рассчитываются в двухзначных значениях.
Кода -копия выглядит следующим образом:
/**
* Операция добавления, чтобы избежать многозначных чисел и потерь точности расчета после добавления десятичных точек к данным.
*
* @param num1 Добавить номер 1 | num2 добавить номер 2
*/
function numadd (num1, num2) {
var basenum, basenum1, basenum2;
пытаться {
basenum1 = num1.toString (). Split (".") [1] .length;
} catch (e) {
basenum1 = 0;
}
пытаться {
basenum2 = num2.toString (). Split (".") [1] .length;
} catch (e) {
basenum2 = 0;
}
basenum = math.pow (10, math.max (basenum1, basenum2));
return (num1 * basenum + num2 * basenum) / basenum;
};
/**
* Операция добавления, чтобы избежать многозначных чисел и потерь точности расчета после уменьшения фазы данных.
*
* @param num1 вычитается | num2 вычитается
*/
функция numSub (num1, num2) {
var basenum, basenum1, basenum2;
var precision; // Точность
пытаться {
basenum1 = num1.toString (). Split (".") [1] .length;
} catch (e) {
basenum1 = 0;
}
пытаться {
basenum2 = num2.toString (). Split (".") [1] .length;
} catch (e) {
basenum2 = 0;
}
basenum = math.pow (10, math.max (basenum1, basenum2));
precision = (basenum1> = basenum2)? basenum1: basenum2;
return ((num1 * basenum - num2 * basenum) / basenum) .tofixed (precision);
};
/**
* Операция умножения, чтобы избежать многозначных чисел и потерь точности расчета после умножения данных на десятичные точки.
*
* @param num1 Multiplier | num2 Multiplier
*/
функция nummulti (num1, num2) {
var basenum = 0;
пытаться {
basenum += num1.toString (). Split (".") [1] .length;
} catch (e) {
}
пытаться {
basenum += num2.toString (). Split (".") [1] .length;
} catch (e) {
}
Возврат номер (num1.toString (). заменить (".", "")) * number (num2.toString (). remect (".", "" ")) / math.pow (10, basenum);
};
/**
* Операция деления, чтобы избежать многозначных чисел и потерь точности расчета после деления десятичной точки данных.
*
* @param num1 дивиденды | дивиденд num2
*/
функция numdiv (num1, num2) {
var basenum1 = 0, basenum2 = 0;
var basenum3, basenum4;
пытаться {
basenum1 = num1.toString (). Split (".") [1] .length;
} catch (e) {
basenum1 = 0;
}
пытаться {
basenum2 = num2.toString (). Split (".") [1] .length;
} catch (e) {
basenum2 = 0;
}
с (математикой) {
basenum3 = number (num1.toString (). replication (".", ""));
basenum4 = number (num2.toString (). заменить (".", ""));
возврат (basenum3 / basenum4) * pow (10, basenum2 - basenum1);
}
};