मेरा कोड:
// रामानुजन की गणना की विधि PI सार्वजनिक वर्ग मुख्य {निजी स्थिर अंतिम डबल ए 1 = 9801.0; निजी स्थिर अंतिम डबल ए 2 = 1103.0; निजी स्थिर अंतिम डबल A3 = 26390.0; निजी स्थिर अंतिम डबल ए 4 = 396.0; निजी स्थिर अंतिम पूर्णांक loops = 2; निजी स्थिर डबल असम; सार्वजनिक स्थैतिक डबल फैक्टरिकल (डबल एन) {if (n == 0) रिटर्न 1; वापसी n * फ़ैक्टिकल (एन -1); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) {// (int i = 0; i & lt; = loops; i ++) के लिए गणना {asum + = ((2 * Math.sqrt (2)) / a1) * ( (फेक्टोरियल (4.0 * आई)) * (ए 2 + (ए 3 * आई)) / (((मथपॉ (फैक्टरियल (आई), 4.0))) * (मथपॉ। (ए 4, (4.0 * आई)) )); } System.out.println (Math.pow (asum, -1)); }}
मुझे गरीब पठनीयता के लिए खेद है, लेकिन फिलहाल मैं अपने फोन पर हूं, इसलिए कोड संपादित करना मुश्किल है। मैं अपने प्रोग्राम को गणना करने की रामानुजन विधि के माध्यम से पी को प्रिंट करने का प्रयास कर रहा हूं, फिर भी मैं केवल डबल्स से परिचित हूं, और बड़ी दशमलव का उपयोग करने के प्रयास के बाद, मैं अभी भी फंस गया हूं। इस संदर्भ में मैं बड़ी दशमलव का उपयोग कैसे करूं? धन्यवाद!
प्रयास:
आयात करें java.math। *; // रामानुजन की गणना की विधि Pi सार्वजनिक कक्षा मुख्य {निजी स्थिर अंतिम BigDecimal ए 1 = नया बिगडीक्यूमल (9810); निजी स्थिर अंतिम बिगडीकल ए 2 = नया बिगडीक्यमल (1103); निजी स्टेटिक फाइनल बिगडीकेल ए 3 = नया बिगडीकल (26390.0); निजी स्थिर अंतिम बिगडीकेल ए 4 = नया बिगडीकेलल (396.0); निजी स्टेटिक फाइनल बिगडेकम्युल कंस 1 = नया बिगडीकेलल (2 * मठ.sqrt (2)); निजी स्थिर अंतिम पूर्णांक loops = 2; निजी स्थिर बिगडीकल असम; सार्वजनिक स्थिर बिगडीकैमिकल फैक्टरियल (बिगडीकैमल एन) {if (n == n.ZERO) वापस n.ONE; वापसी n.multiply (तथ्यात्मक (n.subtract (n.ONE))); } सार्वजनिक स्थिर बिगडीस्केल कैलक्यू 1 (इंट आई) {बिगडीकेल रेट = नई बिगडीकल ((कारक (4 * i)); रिटर्न रिट;} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {for (int i = 0; i & lt; = लूप; i ++) {asum + = (con1.divide (a1))। गुणा (calc1 (i))। गुणा ((a2 + (a3.multiply (i)))। विभाजित (((Math.pow (factorial (I), 4.0)))। मल्टीपीली (मथपॉ (ए 4, (4.0 * आई)))}} सिस्टम। आउट.प्रिंटलाइन (मथपॉ (असम, -1))}
< / <> <
डबल से
से बिगडीकैमल
s लगभग मैकेनिकल है। यहां कुछ सरल चरणों में आप ऐसा कैसे कर सकते हैं:
-
java.math.bigDecimal
का एक आयात जोड़ें अपने प्रोग्राम के शीर्ष पर - सभी वैरिएबल प्रकार
डबल
को वेरिएबल्स प्रकारBigDecimal
के साथ प्रतिस्थापित करें - सभी मान प्रारंभिकता को प्रतिस्थापित करें
बिगडीकैमल
कन्स्ट्रक्टर की कॉल; शून्य के लिए फ़ील्डशून्य
औरONE
का उपयोग करें। - रीवाइट
BigDecimal
के विधियों का उपयोग करते हुए ई एक्सप्रेशंस।
आप कुछ समय बचाने के लिए भी स्थिरांक जोड़ सकते हैं, उदाहरण के लिए
BigDecimal sqRootOfTwo = नया बिगडीकल (मठ.sqrt (2));
अंतिम चरण ट्रिकिएस्ट है: उदाहरण के लिए, अगर आपके पास ऐसा अभिव्यक्ति है जो इस तरह दिखता है
डबल d = a * b + c;
इसे इस तरह से फिर से लिखा जाना चाहिए:
बिगडीकैमिल डी = ए। मल्टीप्ली (बी) .add (c);
डिवीजन मुश्किल भी है, क्योंकि आपको वांछित सटीक निर्दिष्ट करना होगा हालांकि, संपूर्ण रूपांतरण अपेक्षाकृत सरल होना चाहिए: यदि आप अपना प्रोग्राम डबल
s का उपयोग करने में कामयाब रहे और आप सही ढंग से रूपांतरण का पालन करते हैं, तो परिणाम का काम करना चाहिए।
Comments
Post a Comment