js 가감 곱 하기 정확 한 계산
CRM,2 세대 심사 수요 심사 상세 페이지 를 만 들 때.사용자 가 입력 한 숫자 를 비율(백 엔 드 에서 0.8 과 유사 한 소수)에 따라 다른 곳 에 표시 해 야 합 니 다.
dubheInvest=invest*(1-ratio)를 하고 있 습 니 다.연산 할 때 문 제 를 발견 하 다.구체 적 으로 다음 과 같다.
예제 코드:
console.log( 1 - 0.8 ); // 0.19999999999999996
console.log( 6 * 0.7 ); // 4.199999999999999
console.log( 0.1 + 0.2 ); // 0.30000000000000004
console.log( 0.1 + 0.7 ); // 0.7999999999999999
console.log( 1.2 / 0.2 ); // 5.999999999999999
위 에서 제시 한 예 를 통 해 알 수 있 듯 이 원생 의 js 연산 결과 가 반드시 정확 하지 않 고 정밀 도 를 잃 을 수 있다.해결 방안
해결 방안 의 원 리 는 부동 소수점 을 10 의 n 제곱 배 에 곱 하고 부동 소수점 을 정수 로 바 꾼 후 해당 하 는 연산 을 한 다음 에 얻 은 결 과 를 10 의 n 제곱 배로 나 누 는 것 이다.
원리 예시:
console.log(1-0.8); console.log(1*10-0.8*10)/10 으로 변경 합 니 다.정확 한 값 을 얻 을 수 있 습 니 다.
상술 한 원리 에 근거 하여 몇 가지 방법 을 봉 하여 이런 문 제 를 해결 할 수 있다.다음 과 같다(Math.pow(x,y).구 x 의 y 제곱 을 나타 낸다):
//
function floatAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
return (arg1*m+arg2*m)/m;
}
//
function floatSub(arg1,arg2){
var r1,r2,m,n;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
//
n=(r1>=r2)?r1:r2;
return ((arg1*m-arg2*m)/m).toFixed(n);
}
//
function floatMul(arg1,arg2) {
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}
//
function floatDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
r1=Number(arg1.toString().replace(".",""));
r2=Number(arg2.toString().replace(".",""));
return (r1/r2)*Math.pow(10,t2-t1);
}
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 js 가감 승제 정확 한 계산 과 상세 한 통합 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.만약 에 궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 여러분 에 게 답 할 것 입 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.