मैं एक ऐसा प्रोग्राम बनाने की प्रक्रिया में हूं जो एक वीएचडीएल टेस्टबेंच में उपयोग किए जाने वाले परीक्षण वैक्टर उत्पन्न करता है। Testbench अनिवार्य रूप से हार्डवेयर के एक टुकड़े का परीक्षण करता है जो एक सटीक फ्लोटिंग पॉइंट योजक के रूप में कार्य करता है, इसलिए वेक्टर आईईईई 754 मानक के अनुरूप होंगे।क्या यह फ्लोट से बिगडिसिल तक वापस खतरनाक है?
वैसे भी, पीढ़ी के लिए मेरी वर्तमान योजना फ्लोट मानों को BigDecimal
में परिवर्तित करना है, आवश्यक अंकगणित करें, फिर वापस फ्लोट में कनवर्ट करें। क्या यह खतरनाक है? क्या सटीकता खो जाएगी जिसके परिणामस्वरूप परीक्षण वेक्टर में संभावित रूप से गलत परिणाम होगा? मैं BigDecimal
में कनवर्ट करना चाहता हूं, इसलिए मैं मुद्दों को गोल करने से बच सकता हूं।
तो क्या यह परिणाम कम कर देगा?
BigDecimal repA = new BigDecimal(Float.toString(A));
BigDecimal repB = new BigDecimal(Float.toString(B));
BigDecimal repResult = repA.add(repB);
float result = repResult.floatValue();
जहां ए और बी कुछ फ्लोट हैं।
आप निश्चित रूप से कुछ परिशुद्धता खो देंगे क्योंकि एक फ्लोट सभी संभावित आंशिक संख्याओं का प्रतिनिधित्व नहीं कर सकता है। – anubhava
क्या कोई तरीका है कि मैं इसे किसी भी परिशुद्धता को खोने से पूरा कर सकता हूं? – Franklin
आपको लगता है कि आपको कितना सटीक लगता है? –