자바 스크립트 오류 부동 소수점 수치의 수

버그 자바 스크립트 부동 소수점 연산.
  예를 들어 : 7 * 0.8 자바 스크립트가 계산됩니다 5.6000000000000005

// 전화 : numberExcept (ARG1, ARG2)

// 반환 값 : 분할의 정확한 결과 ARG2 ARG1
기능   
numberExcept (ARG1, ARG2를) {

  VAR의 T1 = 0, T2 = 0, R1, R2;
  시도 {T1 = arg1.toString (). 분리 "."[1] .length} 캐치 (E) {}
  {시도 arg2.toString T2 = (). 분할 "."[1] .length} 캐치 (E) {}
  (수학)와 {
  R1 = 번호 (arg1.toString (). (바꾸기 ".", ""))
  R2 = 번호 (arg2.toString (). (교체 ".", "") )
  창 (R1 / R2) * POW (10, T2-T1);
  }
}

 

// 전화 :

numberRide (ARG1, ARG2)

// 반환 값 : 정확한 결과 승산 ARG1 ARG2의
기능을 numberRide (ARG1, ARG2)

{
  VAR m = 0, S1 = arg1.toString (), S2 = arg2.toString ();
  시도 {m + = s1.split "."[1] .length} 캐치 (E) {}
  {m + = s2.split "."[1] .length} 캐치 (E) {} 시도
  반환 번호 (s1.replace ( ".", "")) * 번호 (s2.replace ( ".", "")) / Math.pow (10 m)
}

// 전화 : accAdd (ARG1, ARG2)의
반환 값 : // 첨가 정확한 결과 ARG1에 ARG2
기능 accAdd (ARG1, ARG2) {
  VAR R1, R2, m을,
  은 try {R1 = () 스플릿 ( "Arg1.toString. . ")는 [. 1]} 캐치 (E) R1 = {0} .length
  ."). 1]} 캐치 .length (E) R2 = {0} {시도 arg2.toString R2 = (). 스플릿 ( "
  m을 Math.pow = (10 Math.max (R1, R2))
  창 (ARG1에 ARG2 * m +에서의 m) / m
}


뺄셈 기능

함수 accSub (ARG1, ARG2) {
VAR의 R1, R2, m, n은;
R1 = {arg1.toString ()를. 분리 "."[1] .length} 시도 캐치 (E) {R1 = 0}
{시도 arg2.toString R2 = (). 분할 "."[1] .length} 캐치 (E) {R2 = 0}
m = Math.pow (10 Math.max (R1, R2));
// deeka 마지막으로 수정
//动态控制精度长度
N = (R1> R2 =)? R1 : R2;
창 ((ARG1의 m * - * ARG2에서의 m) / m) .toFixed (N);
}

 

추천

출처www.cnblogs.com/FACESCORE/p/11278030.html