2010-03-31 16 views
13
में

किसी ने मुझे बाहर मदद कर सकते हैं तो कृपया इस गणित समस्या के लिए एक जावास्क्रिप्ट/jQuery समाधान के साथ:मुद्रा मठ जावास्क्रिप्ट

मैं दूसरे से संख्या घटाना की जरूरत है।

समस्या यह है कि संख्याओं में डॉलर का संकेत होता है (क्योंकि इसका पैसा), इसलिए jQuery उन्हें संख्याओं के बजाय स्ट्रिंग के रूप में व्यवहार कर रहा है।

मैंने दो चर बनाए हैं - toalAssets और totalLiabilites। मैं बाद वाले को पूर्व से घटा देना चाहता हूं और परिणाम को netWorth नामक दूसरे चर में डाल देना चाहता हूं।

शायद मुझे parseFloat() का उपयोग करने की आवश्यकता है?

लेकिन मुझे यकीन नहीं है कि - यह मेरे सिर पर थोड़ा सा है!

+0

@ मार्क: उसने केवल 5 प्रश्न पूछे हैं और 36 प्रतिनिधि हैं, इसलिए साइट पर स्पष्ट रूप से नया है। – DisgruntledGoat

+3

@ जेरेड: आप अपने पुराने प्रश्नों पर वापस जा सकते हैं (शीर्ष पर अपना उपयोगकर्ता नाम क्लिक करें) और उचित होने पर उनके उत्तरों को स्वीकार करें। अधिक लोगों को भविष्य के सवालों का जवाब देने की संभावना होगी। – 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) प्रतिनिधित्व के रूप में पैसे को संभालने के लिए। यह फ्लोटिंग-पॉइंट अंकगणितीय के साथ समस्याओं से बचने के लिए है। 0.1 + 0.2 == 0.3 जावास्क्रिप्ट में झूठा रिटर्न देता है, लेकिन भाग्यशाली बिंदु में सौभाग्य से पूर्णांक अंकगणित सटीक है, इसलिए स्केलिंग द्वारा दशमलव प्रतिनिधित्व त्रुटियों से बचा जा सकता है।

आप आगे इस विषय पर पढ़ने के लिए निम्नलिखित पोस्ट जाँच करना चाहते हो सकता है: Is JavaScript’s math broken?

आप हमेशा वह मुद्रा हस्ताक्षर स्वरूपण लागू कर सकते हैं जब मूल्यों ब्राउज़र को प्रदान की गई कर रहे हैं।


डगलस Crockford: JavaScript: The Good Parts: Appendix A - Awful Parts (page 105)

+0

नकारात्मकों की अनुमति के लिए अपने पैटर्न को अपडेट किया गया। –

+0

@ पीटर: अपडेट के लिए धन्यवाद :) –

+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

डैनियल - इस गोबल्डेगूक का अर्थ क्या है? /[^0-9\.]+/g, "" – swisstony

+0

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

संबंधित मुद्दे