2010-01-26 12 views
7

मैं एक एसएनएमपी एजेंट कोडिंग कर रहा हूं। मुझे उन मानों को भेजने की आवश्यकता है जिनके पास एक एसएनएमपी प्रबंधक को दशमलव बिंदु है।एसएनएमपी के माध्यम से एक फ्लोटिंग पॉइंट नंबर दिखाने का एक अच्छा तरीका क्या है?

  1. संख्या काटें:

    मैं एक जोड़े विकल्प हैं।

  2. स्थिरता से गुणा करें।
  3. स्टैक ओवरफ्लो से पूछें।

यदि मैं संख्या को छोटा करता हूं तो मुझे बहुत सारी जानकारी मिलती है जो मुझे चाहिए।

यदि मैं स्थिरता से गुणा करता हूं, तो प्रबंधक अजीब इकाइयों को प्रदर्शित करेगा जो अंतिम उपयोगकर्ता नहीं देख पाएंगे। (किलोग्राम के बजाय ग्राम)।

तो, मैं विकल्प कर रहा हूं 3. मैं क्या करूँ?

उत्तर

11

यह सामान्य, मानक तरीका यह है कि एक अभिन्न प्रकार (जैसे इंटीजर 32 या अनसigned 32) और "डीएन" प्रारूप के साथ एक डिस्प्ले-एचआईएनटी के साथ एक टेक्स्ट-कन्वेंशन को परिभाषित करना है, जहां एन की संख्या है स्थानों को प्रदर्शन उद्देश्यों के लिए स्थानांतरित किया जाना चाहिए।

इस प्रकार, 0.0 से 10.0 तक (कहें) से लेकर एक दशमलव स्थान वाले मान के लिए, आप Unsigned32 (0..100) प्रकार के एक टेक्स्ट-कन्वेंशन का उपयोग करेंगे और "डी -1" का एक DISPLAY-HINT । तार पर, मान 0 से 100 तक है, लेकिन प्रबंधक (एमआईबी मॉड्यूल लोड होने के माध्यम से) दशमलव एक स्थान को 0.0 से 10.0 तक प्रदर्शित करने के लिए स्थानांतरित करेगा।

ऐसा करने के अन्य तरीके इंटरऑपरेबिलिटी के लिए अनुकूल नहीं हैं।

2

आईईईई -754 प्रारूप (8 अक्टूबर) में एक ऑक्टेट-स्ट्रीम के रूप में। देखें: http://en.wikipedia.org/wiki/IEEE_754-2008

+1

वास्तव में यह फ्लोट-टीसी-एमआईबी में प्रस्तुतिकरणों में से एक है। इस mib का वर्णन http://tools.ietf.org/html/rfc6340 में किया गया है, और 2011 में जारी किया गया था। – goertzenator

1

मैं उस डेटा को ओसीटीईटी STRING/डिस्प्लेस्ट्रिंग के माध्यम से भेजता हूं। "1.5" जैसे नंबर आसानी से भेजे जा सकते हैं।

हालांकि, यदि डेटा सटीक होने की आवश्यकता है, तो आप बाइट्स (ऑक्टेट्स) भेजकर काइल के सुझाव का उपयोग कर सकते हैं। ध्यान दें कि ओसीटीईटी STRING के माध्यम से भी भेजा जाता है क्योंकि यह एक आदर्श बाइट कंटेनर है।

+0

परीक्षण प्रस्तुत करने की मेरी चिंता यह है कि एसएनएमपी प्रबंधक उस डेटा के साथ कोई गणना नहीं कर सकता है। – Robert

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