2013-05-24 7 views
6

मैं जावास्क्रिप्ट के लिए बहुत नया हूं (मैं जावा पृष्ठभूमि से आया हूं) और मैं कुछ मात्रा में धनराशि के साथ कुछ वित्तीय गणना करने की कोशिश कर रहा हूं।जावास्क्रिप्ट में BigDecimal

इस पर मेरी मूल जाने था:

<script type="text/javascript"> 
    var normBase = ("[price]").replace("$", ""); 
    var salesBase = ("[saleprice]").replace("$", ""); 
    var base; 
    if (salesBase != 0) { 
     base = salesBase; 
    } else { 
     base = normBase; 
    } 
    var per5 = (base - (base * 0.05)); 
    var per7 = (base - (base * 0.07)); 
    var per10 = (base - (base * 0.10)); 
    var per15 = (base - (base * 0.15)); 
    document.write 
     (
     '5% Off: $' + (Math.ceil(per5 * 100)/100).toFixed(2) + '<br/>' + 
     '7% Off: $' + (Math.ceil(per7 * 100)/100).toFixed(2) + '<br/>' + 
     '10% Off: $' + (Math.ceil(per10 * 100)/100).toFixed(2) + '<br/>' + 
     '15% Off: $' + (Math.ceil(per15 * 100)/100).toFixed(2) + '<br/>' 
    ); 
</script> 

इस को छोड़कर यह हमेशा (Math.ceil) को गिरफ्तार अच्छी तरह से काम किया। Math.floor एक ही समस्या है, और Math.round भी तैरने के लिए अच्छा नहीं है।

जावा में, मैं पूरी तरह से चलने से फ्लोट्स के उपयोग से परहेज करता था, हालांकि जावास्क्रिप्ट में कुछ तुलनीय (ओएमजी क्यों!?!?!?!) का एक डिफ़ॉल्ट समावेश प्रतीत नहीं होता है।

तो, मेरी अतः फू इस पोस्ट के लिए मुझे प्रेरित किया है: https://stackoverflow.com/questions/744099/is-there-a-good-javascript-bigdecimal-library

समस्या, सभी पुस्तकालयों उल्लेख या तो टूट रहे है या एक अलग उद्देश्य के लिए। jsfromhell.com/classes/bignumber लाइब्रेरी मुझे जो चाहिए वह बहुत करीब है, हालांकि मुझे इसके गोलाकार और परिशुद्धता के साथ विचित्र मुद्दे हैं ... इससे कोई फर्क नहीं पड़ता कि मैंने राउंड टाइप को सेट किया है, ऐसा लगता है कि यह स्वयं ही तय होता है। तो उदाहरण के लिए, 3.7107 2 और गोल प्रकार ROUND_HALF_UP की परिशुद्धता के साथ 3.72 के रूप में 3.72 के रूप में किसी भी तरह हवाएं बढ़ जाती हैं।

मैंने @ जेसनस्मिथ बिगडेसिमल लाइब्रेरी (जावा के बिगडिसीमल से एक मशीनी पोर्ट) भी कोशिश की, लेकिन ऐसा लगता है कि मेरे पास node.js नहीं है, जिसमें मेरे पास चलाने का विकल्प नहीं है।

मैं इसे वेनिला जावास्क्रिप्ट (और भरोसेमंद) का उपयोग करके कैसे पूरा कर सकता हूं या क्या वहां एक आधुनिक (ऊपर वर्णित कुछ अब पुराने हैं) लाइब्रेरी है जिसका उपयोग मैं कर सकता हूं और इसे तोड़ा नहीं जाता है?

+1

मैं सिर्फ था मेरे "!?!?!?! OMG क्यों" कल कल :) – rubiii

+0

मेरे पास जेएस में हर दिन मेरे ओएमजी क्षण हैं। – user1567291

उत्तर

4

मुझे संख्या, धन और मुद्रा स्वरूपण के लिए accounting.js का उपयोग करना पसंद है।

मुखपृष्ठ - https://openexchangerates.github.io/accounting.js/

Github - https://github.com/openexchangerates/accounting.js

+0

+1 यह आशाजनक लग रहा है! धन्यवाद, मैं इसे आज़मा दूंगा। – SnakeDoc

+1

शुभकामनाएँ! आपको निराश नहीं होना चाहिए। –

+0

एक आकर्षण की तरह काम किया और बिल्कुल उम्मीद की! फिर से धन्यवाद। (अब डिफ़ॉल्ट रूप से इस तरह कुछ शामिल करने के लिए जावास्क्रिप्ट प्राप्त करने के लिए!) – SnakeDoc

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