JavaScript에서는 덧셈, 뺄셈, 곱셈, 나눗셈에 소수를 사용할 때 결과 뒤에 소수의 긴 마침표가 나오는 경우가 있는데, 이는 연산을 복잡하게 하고 계산 결과에 영향을 줍니다. 그 이유를 온라인에서 찾아보니 다음과 같습니다. JavaScript에서는 소수로 데이터를 계산할 때 항상 소수점 자리가 많이 있습니다. 이는 JavaScript의 부동 소수점 계산이 이진 계산을 기반으로 하기 때문입니다.
/**
* 데이터에 소수점을 추가한 후 여러 자릿수 및 계산 정확도 손실을 방지하기 위한 추가 작업입니다.
*
* @param num1 addend 1 | num2 addend 2
*/
function numAdd(num1, num2) {
var baseNum, baseNum1, baseNum2;
try {
baseNum1 = num1.toString().split(".")[1].length; >} catch (e) {
baseNum1 = 0;
}
try {
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 minuend
*/
function numSub(num1, num2) {
var baseNum, baseNum1, baseNum2; >try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch(e) {
baseNum2 = 0
}
baseNum = 수학 .pow( 10, Math.max(baseNum1, baseNum2));
precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2
return ((num1 * baseNum - num2 * baseNum) / baseNum). toFixed(정밀도 );
};
/**
* 데이터에 소수점을 곱한 후 여러 자릿수 및 계산 정확도 손실을 방지하기 위한 곱셈 연산입니다.
*
* @param num1 피승수 num2 승수
*/
function numMulti(num1, num2) {
var baseNum = 0
try {
baseNum = num1.toString ().split(".")[1].length;
} catch (e) {
}
try {
baseNum = num2.toString().split(" .") [1].length;
} catch (e) {
}
return Number(num1.toString().replace(".", "")) * Number(num2.toString) ().replace(".", "")) / Math.pow(10, baseNum)
/**
* 데이터를 소수점으로 나눈 후 여러 자릿수 및 계산 정확도 손실을 방지하기 위한 나눗셈 연산입니다.
*
* @param num1 배당수 num2 제수
*/
function numDiv(num1, num2);
var baseNum1 = 0, baseNum2 = 0;
var baseNum3, baseNum4
try {
baseNum1 = num1.toString().split(".")[1].length; >} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length; catch (e ) {
baseNum2 = 0;
}
with (Math) {
baseNum3 = Number(num1.toString().replace(".", "")); >baseNum4 = Number(num2.toString().replace(".", ""));
return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1)
}
};