2010-03-31 4 views
13

누구든지 JavaScript/jQuery 솔루션으로이 산술 문제를 해결할 수 있습니까?통화 JavaScript로 계산

다른 숫자에서 하나의 숫자를 뺄 필요가 있습니다.

문제는 숫자에 달러 기호가 있기 때문에 jQuery가 숫자 대신 문자열로 취급한다는 것입니다.

두 변수 - toalAssetstotalLiabilites을 만들었습니다. 후자를 전자에서 뺀 다음 결과를 netWorth이라는 다른 변수에 넣고 싶습니다.

아마 parseFloat()을 사용해야합니까?

하지만 잘 모르겠다 -이 모든 것이 내 머리 위로 조금있다!

+0

@ 마크 : 그는 단지 5 개의 질문을하고 36 명의 담당자가 있으므로 분명히 사이트에 처음 나온 사람입니다. – DisgruntledGoat

+3

@ Jared : 이전 질문으로 돌아가서 (맨 위에있는 사용자 이름을 클릭) 적절한 경우 답변을 수락 할 수 있습니다. 미래의 질문에 더 많은 사람들이 대답 할 것입니다. – DisgruntledGoat

+0

"6 개월 동안 회원" –

답변

29
var totalLiabilites = '$52.34'; 
var toalAssets  = '$85.12'; 
var pattern   = /[^0-9.-]+/g; 

var result = parseFloat(toalAssets.replace(pattern, '')) - 
      parseFloat(totalLiabilites.replace(pattern, '')); 

// result: 32.78 

참고 : 자바 스크립트에서 센트의 수 (대신 85.12의 8512)를 나타내는 정수로 돈을 처리하기 위해 1을 권장. 이것은 부동 소수점 산술의 문제점을 피하기위한 것입니다. 0.1 + 0.2 == 0.3은 JavaScript에서 false를 반환하지만 다행히도 부동 소수점의 산술 연산은 정확하므로 스케일링을 통해 10 진 표현 오류를 피할 수 있습니다.

또한 귀하는이 주제에 대한 읽기 위해 다음과 같은 게시물을 확인 할 수 있습니다 : 값이 브라우저에 렌더링 할 때 당신은 항상 통화 서명 서식을 적용 할 수 있습니다 Is JavaScript’s math broken?

.

1 더글러스 크록 포드


: JavaScript: The Good Parts: Appendix A - Awful Parts (page 105).

+0

네거티브를 허용하도록 패턴을 업데이트했습니다. –

+0

@Peter : 업데이트 주셔서 감사합니다 :) –

+0

좋은 사례에 대한 조언을 해 주셔서 감사합니다. – Jazzepi

6

parseFloat() 문자열이 숫자가 아닌 달러 기호로 시작되기 때문에 작동하지 않습니다.

당신은 단순히이 값을 얻을 수있는에서는 parseFloat와 함께, 달러 기호를 제거하는 대신 수행 할 수 있습니다

totalAssets = parseFloat(totalAssets.replace('$', '')); 
totalLiabilities = parseFloat(totalLiabilities.replace('$', '')); 

var difference = '$' + (totalAssets - totalLiabilities); 

이 코드는 수레와 원래의 문자열을 대체합니다. 그것들을 새로운 변수에도로드 할 수 있습니다. 마찬가지로, 차이점 앞에 '$'를 붙일 필요가 없습니다.

1
var a = "$20"; 
var b = "$34"; 
var c = parseFloat(a.replace(/[^0-9\.]+/g, "")) - parseFloat(b.replace(/[^0-9\.]+/g, "")); 
alert(c); 
+0

Daniel -이 협곡은 무엇을 의미합니까? /[^0-9\.]+/g, "" – swisstony

+0

http://www.regular-expressions.info/reference.html – XGreen